diff --git a/src/api/class/src/class.cpp b/src/api/class/src/class.cpp new file mode 100644 index 0000000000000000000000000000000000000000..867e09d2425004b45bee68cad4606b5e5720eece --- /dev/null +++ b/src/api/class/src/class.cpp @@ -0,0 +1,597 @@ +/** + * @file class.cpp + * @author Alfonso Dominguez <alfonso.dominguez@tecnalia.com> and Leire Querejeta Lomas <leire.querejeta@tecnalia.com> + * @date 2020 + * + * Copyright 2020 Tecnalia Research & Innovation. + * Distributed under the GNU GPL v3. + * For full terms see https://www.gnu.org/licenses/gpl.txt + * + * @brief Interface to the funcionalities of Class + */ + +#include "class/class.hpp" +#include <iostream> +#include <class/class_core.hpp> + +using namespace std; + +Class::Class() +{ + std::cout << "Class cstr" << std::endl; + core_ = new ClassCore(); +} + +Class::~Class() +{ + std::cout << "Class dstr" << std::endl; + if (core_ != NULL) + { + delete core_; + core_ = NULL; + } +} + +ClassError::Error Class::connect() +{ + std::string server_ip = DEFAULT_SERVER_IP; + int server_port = DEFAULT_SERVER_PORT; + + std::string local_ip = DEFAULT_LOCAL_IP; + int local_port = DEFAULT_LOCAL_PORT; + + return core_->connect(server_ip, server_port, local_ip, local_port); +} + +ClassError::Error Class::connect(const std::string & server_ip, const int & server_port) +{ + std::string local_ip = DEFAULT_LOCAL_IP; + int local_port = DEFAULT_LOCAL_PORT; + + return core_->connect(server_ip, server_port, local_ip, local_port); +} + +ClassError::Error Class::connect(const std::string & server_ip, const int & server_port, const int & local_port) +{ + std::string local_ip = DEFAULT_LOCAL_IP; + + return core_->connect(server_ip, server_port, local_ip, local_port); +} + +ClassError::Error Class::connect(const std::string & server_ip, const int & server_port, const std::string & local_ip, const int & local_port) +{ + return core_->connect(server_ip, server_port, local_ip, local_port); +} + +ClassError::Error Class::disconnect() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->disconnect(); +} + +ClassError::Error Class::setAcqConfig(const AcqFreq& frequency, const std::vector<int>& channel_numbers, const AcqGain& gain, const AcqInput& input) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + double freq = 0.0; + int channel_numb = 0; + double acq_gain = 0.0; + std::string input_str = "test"; + + switch(frequency) + { + case FREQ_250 : freq = 250; break; + case FREQ_500 : freq = 500; break; + case FREQ_1000 : freq = 1000; break; + case FREQ_2000 : freq = 2000; break; + case FREQ_4000 : freq = 4000; break; + case FREQ_8000 : freq = 8000; break; + } + + switch(gain) + { + case GAIN_1 : acq_gain = 1; break; + case GAIN_2 : acq_gain = 2; break; + case GAIN_4 : acq_gain = 4; break; + case GAIN_8 : acq_gain = 8; break; + case GAIN_12 : acq_gain = 12; break; + case GAIN_24 : acq_gain = 24; break; + } + + switch(input) + { + case NORMAL : input_str = "normal"; break; + case TEST : input_str = "test"; break; + } + + return core_->setAcqConfig(freq, channel_numbers, acq_gain, input_str); +} + +ClassError::Error Class::startAcq() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqOn(); +} + +ClassError::Error Class::startImpedanceAcq() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqImpedanceOn(); +} + +ClassError::Error Class::stopAcq() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqOff(); +} + +ClassError::Error Class::stopImpedanceAcq() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqImpedanceOff(); +} + +ClassError::Error Class::startAcqStream() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqStreamOn(); +} + +ClassError::Error Class::stopAcqStream() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqStreamOff(); +} + +ClassError::Error Class::setAcqInputNormal() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqInputNormal(); +} + +ClassError::Error Class::setAcqInputTest() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->acqInputTest(); +} + +ClassError::Error Class::initCommunication() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->initCommunication("DESKTOP"); +} + +ClassError::Error Class::initCommunication(const InitMode& mode) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + std::string init_mode = ""; + + switch(mode) + { + case TACTILITY: init_mode = "TACTILITY"; break; + case PAIN: init_mode = "PAIN"; break; + case DESKTOP: init_mode = "DESKTOP"; break; + case NEURORESEARCH: init_mode = "DESKTOP"; break; + case ICARE: init_mode = "ICARE"; break; + case TIB_ACQ: init_mode = "TIB_ACQ"; break; + case TIB_STIM: init_mode = "TIB_STIM"; break; + default: init_mode = "DESKTOP"; break; + } + + return core_->initCommunication(init_mode); +} + +std::vector<AcqFrame> Class::getAcqFrames() +{ + //std::cout << "getAcqFrames" << std::endl; + std::vector<AcqFrame> acqFrames; + + if (core_ == NULL) + return acqFrames; + + int output = core_->getAcqFrames(acqFrames); + + return acqFrames; +} + +ClassError::Error Class::patternDelete(const int& id) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->patternClear(id); +} + +ClassError::Error Class::getPatternStatus(const int& id) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->patternStatus(id); +} + +ClassError::Error Class::startStim() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->stimOn(); +} + +ClassError::Error Class::stopStim() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->stimOff(); +} + +ClassError::Error Class::setElecPads(const int& id, const int& pads_number) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->elecPads(id, pads_number); +} + +ClassError::Error Class::setStimFreq(const double& frequency) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->stimFreq(frequency); +} + +ClassError::Error Class::setDevName(const std::string& devicename) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->devName(devicename); +} + +ClassError::Error Class::sethvValue(const std::string& hvvalue) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->hvValue(hvvalue); +} + +ClassError::Error Class::sethvOn() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->hvOn(); +} + +ClassError::Error Class::sethvOff() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->hvOff(); +} + +ClassError::Error Class::setlogeventsOn() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->logeventsOn(); +} + +ClassError::Error Class::setlogeventsOff() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->logeventsOff(); +} + +ClassError::Error Class::setintervalValue(const std::string& interval) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->intervalValue(interval); +} + +ClassError::Error Class::setbuzzerTempo(const std::string& tempo) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->buzzerTempo(tempo); +} + +ClassError::Error Class::setbuzzerPlay() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->buzzerPlay(); +} + +ClassError::Error Class::setrtcDate(const std::string& rtcDate) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->rtcDate(rtcDate); +} + +ClassError::Error Class::setrtcTime(const std::string& rtcTime) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->rtcTime(rtcTime); +} + +ClassError::Error Class::setShutdown() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->shutdown(); +} + +ClassError::Error Class::setSDFunctionName(const std::string& sdfunctionname) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->sdFunctionName(sdfunctionname); +} + +ClassError::Error Class::setSDUName(const std::string& sduname) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->sdUName(sduname); +} + +ClassError::Error Class::setPattern(const int& id, const std::vector<Pattern>& pat) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->pattern(id,pat); +} + +ClassError::Error Class::setVelec(const int& id, const std::string& name, const int& electrode_id, const std::vector<int>& cathodes, const std::vector<int>& anodes, const std::vector<double>& amp, const std::vector<int>& width, const bool& selected, const bool& sync) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->velec(id, name, electrode_id, cathodes, anodes, amp, width, selected, sync); +} + +ClassError::Error Class::setVelecSelected(const int& id, const bool& selected) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->velecSelected(id, selected); +} + +ClassError::Error Class::setVelecsSelected(const std::vector<int>& id, const std::vector<bool>& selected) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->velecsSelected(id, selected); +} + +ClassError::Error Class::stimVelec(const std::string& name) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->stimVelec(name); +} + +ClassError::Error Class::getVelecStatus(const int& id) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->velecStatus(id); +} + +ClassError::Error Class::setAcqImpedanceConfig(const AcqImpedanceSign& type) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + bool positive = false; + switch(type) + { + case TYPE_POSITIVE : positive = true; break; + case TYPE_NEGATIVE : positive = false; break; + } + + return core_->acqImpedanceConfig(positive); +} + +ClassError::Error Class::setAcqImpedancePolarity(const AcqImpedancePolarity& polarity) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + bool unipolar = false; + switch(polarity) + { + case TYPE_UNIPOLAR : unipolar = true; break; + case TYPE_BIPOLAR : unipolar = false; break; + } + + return core_->acqImpedancePolarity(unipolar); +} + +ClassError::Error Class::setImpedanceFilterOrder(const int& order) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->impedanceFilterOrder(order); +} + +ClassError::Error Class::setBufferDuration(const double& ms) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->bufferDuration(ms); +} + +ClassError::Error Class::setCallback(ClassCallback * callback, std::string language) +{ + if (callback) + { + return core_->setCallback(callback, language); + } + else + { + return ClassError::ERROR_CB_NULL; + } +} + +ClassError::Error Class::getBattery() +{ + + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->batteryLevel(); +} + +ClassError::Error Class::getFirmware() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->firmwareVersion(); +} + +ClassError::Error Class::getDeviceName() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->deviceName(); +} + +ClassError::Error Class::getLogevents() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->logeventsStatus(); +} + +ClassError::Error Class::getHv() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->hvStatus(); +} + +ClassError::Error Class::getInterval() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->intervalStatus(); +} + +ClassError::Error Class::getRTC() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->rtcStatus(); +} + +ClassError::Error Class::getBuzzer() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->buzzerStatus(); +} + +ClassError::Error Class::getFrequency() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->frequencyStatus(); +} + +ClassError::Error Class::getHardware() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->hardwareVersion(); +} + +ClassError::Error Class::getSDFunction() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->sdfunctionStatus(); +} + +ClassError::Error Class::getSDUName() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->sdunameStatus(); +} + +ClassError::Error Class::getTic() +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->tic(); +} + +ClassError::Error Class::sendCustomCmd(const std::string& cmd) +{ + if (core_ == NULL) + return ClassError::ERROR_CORE_NULL; + + return core_->sendCustomCmd(cmd); +} \ No newline at end of file