#include <iostream>
#include <cstring>
using namespace std;

extern "C"{

//allgemein
//-------------------------------------------------------------------------------------------------------------------------------------
    string PATH_OV = "meta/dist/Release/openvibe-designer.sh";
    string PATH_AquisitionServer = "meta/dist/Release/openvibe-acquisition-server.sh";

    

//visuell
//-------------------------------------------------------------------------------------------------------------------------------------
    string PATH_FILES_Visual = "Projekte/OpenVibe_THN-p300-bci-main/p300-visual/";
    string pathOVFile_visuell = "Projekte/OpenVibe_THN-p300-bci-main/p300-visual/signals/p300-xdawn-train.ov";
    string pathClassifierCFG_visuell = "Projekte/OpenVibe_THN-p300-bci-main/p300-visual/cfg/p300-classifier.cfg";
    string pathSpatialCFG_visuell = "Projekte/OpenVibe_THN-p300-bci-main/p300-visual/cfg/p300-spatial-filter.cfg";
    string PATH_DEFAULT_visuell = "Projekte/OpenVibe_THN-p300-bci-main/p300-visual/datasets";

    string fileCopySpellingVisuell = "p300-xdawn-1-acquisition.xml";
    string filefreeSpellingVisuell = "p300-xdawn-4-online.xml";
    string fileXDawnTrainingVisuell = "p300-xdawn-2-train-xDAWN.xml";
    string fileClassifierTrainingVisuell = "p300-xdawn-3-train-classifier.xml";

//taktil
//------------------------------------------------------------------------------------------------------------------------------------
    string fileCopySpellingTaktil = "p300-tactile-1-acquisition.xml";
    string filefreeSpellingTaktil = "p300-tactile-4-online.xml";
    string fileXDawnTrainingTaktil = "p300-tactile-2-train-xDAWN.xml";
    string fileClassifierTrainingTaktil = "p300-tactile-3-train-classifier.xml";

    string PATH_FILES_taktil = "Projekte/OpenVibe_THN-p300-bci-main/p300-tactile/";
    string pathOVFile_taktil = "Projekte/OpenVibe_THN-p300-bci-main/p300-tactile/signals/p300-xdawn-train.ov";
    string pathClassifierCFG_taktil = "Projekte/OpenVibe_THN-p300-bci-main/p300-tactile/cfg/p300-classifier.cfg";
    string pathSpatialCFG_taktil = "Projekte/OpenVibe_THN-p300-bci-main/p300-tactile/cfg/p300-spatial-filter.cfg";
    string PATH_DEFAULT_taktil = "Projekte/OpenVibe_THN-p300-bci-main/p300-tactile/datasets";

    string PATH_FILES_ConfigFile = "Projekte/OpenVibe_THN-p300-bci-main/cfg/OV_TACTILE_PANDA.conf";

//Befehle
//-------------------------------------------------------------------------------------------------------------------------------------
    string command = "bash";
    string nogui = "--no-gui";
    string play = "--play";
    string playFast = "--play-fast";
    string config = "--config";


    char* getCommandPS(){
        string s = "";
        s = s.append("ps").append(" ").append("-e");
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getCommandFreespellingTaktil()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append(config).append(" ").append(PATH_FILES_ConfigFile).append(" ").append( play).append(" ").append(PATH_FILES_taktil).append(filefreeSpellingTaktil).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

      char* getCommandFreespellingVisuell()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append( play).append(" ").append(PATH_FILES_Visual).append(filefreeSpellingVisuell).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

      char* getCommandCopyspellingTaktil()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append(config).append(" ").append(PATH_FILES_ConfigFile).append(" ").append( play).append(" ").append(PATH_FILES_taktil).append(fileCopySpellingTaktil).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

      char* getCommandCopyspellingVisuell()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append( play).append(" ").append(PATH_FILES_Visual).append(fileCopySpellingVisuell).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

      char* getCommandXDawn_taktil()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append(config).append(" ").append(PATH_FILES_ConfigFile).append(" ").append( playFast).append(" ").append(PATH_FILES_taktil).append(fileXDawnTrainingTaktil).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getCommandXDawn_visuell()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append( playFast).append(" ").append(PATH_FILES_Visual).append(fileXDawnTrainingVisuell).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

      char* getCommandClassifier_visuell()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append( playFast).append(" ").append(PATH_FILES_Visual).append(fileClassifierTrainingVisuell).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getCommandClassifier_taktil()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_OV).append(" ").append(config).append(" ").append(PATH_FILES_ConfigFile).append(" ").append( playFast).append(" ").append(PATH_FILES_taktil).append(fileClassifierTrainingTaktil).append(" ").append(nogui);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }
    

    char* getCommandStartAquisitionServer()
    {
        string s = "";
        s = s.append(command).append(" ").append(PATH_AquisitionServer);
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

     char* getDefaultPath_visuell()
    {
        string s = PATH_DEFAULT_visuell;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getDefaultPath_taktil()
    {
        string s = PATH_DEFAULT_taktil;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getPathOVFile_visuell()
    {
        string s = pathOVFile_visuell;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getSpatialCFGFile_visuell()
    {
        string s = pathSpatialCFG_visuell;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getClassifierCFGFile_visuell()
    {
        string s = pathClassifierCFG_visuell;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getPathOVFile_taktil()
    {
        string s = pathOVFile_taktil;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getSpatialCFGFile_taktil()
    {
        string s = pathSpatialCFG_taktil;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }

    char* getClassifierCFGFile_taktil()
    {
        string s = pathClassifierCFG_taktil;
        char char_array[s.length()+1];
        strcpy(char_array, s.c_str());
        char* s_convert = char_array;
        return s_convert;
    }
}





