From 9f88a54e4a4f430ae95028a946114fb56213255c Mon Sep 17 00:00:00 2001
From: "Querejeta Lomas, Leire" <leire.querejeta@tecnalia.com>
Date: Tue, 30 Aug 2022 09:43:10 +0200
Subject: [PATCH] Subir nuevo archivo

---
 src/api/class/src/class.cpp | 597 ++++++++++++++++++++++++++++++++++++
 1 file changed, 597 insertions(+)
 create mode 100644 src/api/class/src/class.cpp

diff --git a/src/api/class/src/class.cpp b/src/api/class/src/class.cpp
new file mode 100644
index 0000000..867e09d
--- /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
-- 
GitLab