Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Revision:
24:92c30dabfda4
Parent:
22:a5929d3668b6
Child:
38:9b43b2415093
--- a/Value.cpp	Tue Sep 11 21:11:35 2018 +0000
+++ b/Value.cpp	Tue Sep 11 21:45:52 2018 +0000
@@ -1,13 +1,15 @@
+#include <string>
+
 #include "Value.hpp"
 
 using namespace misnet;
 
 
-void Value::setValue(Value::VALUE_TYPE type, Value::GENERIC_VALUE value) {
+void Value::setValue(Value::GENERIC_VALUE value) {
 
-  this->_value.type = type;
+  this->_value.type = value.type;
 
-  switch (type) {
+  switch (value.type) {
   case Value::BOOLEAN:
     this->_value.value.bool_value = value.value.bool_value;
     break;
@@ -52,6 +54,12 @@
     this->_value.value.time_value = value.value.time_value;
     break;
 
+  case Value::TRIPLE_DOUBLE:
+    this->_value.value.triple_double_values[0] = value.value.triple_double_values[0];
+    this->_value.value.triple_double_values[1] = value.value.triple_double_values[1];
+    this->_value.value.triple_double_values[2] = value.value.triple_double_values[2];
+    break;
+
   default:
     break;
   }
@@ -186,6 +194,19 @@
     return -1;
     break;
 
+  case Value::TRIPLE_DOUBLE:
+    if ((this->_value.value.triple_double_values[0] == otherValue._value.value.triple_double_values[0])
+         && (this->_value.value.triple_double_values[1] == otherValue._value.value.triple_double_values[2])
+         && (this->_value.value.triple_double_values[1] == otherValue._value.value.triple_double_values[2])) {
+      return 0;
+    }
+    else if (this->_value.value.triple_double_values[0] > otherValue._value.value.triple_double_values[0]) {
+      return 1;
+    }
+
+    return -1;
+    break;
+
   default:
     return -2;
     break;
@@ -193,7 +214,7 @@
 }
 
 
-std::string Value::getValueAsString() {
+std::string Value::toString() {
     /*
   DEBUG("ENTREE\n");
   DEBUG("This = %p\n", this);
@@ -254,6 +275,12 @@
     stringStream << this->_value.value.time_value;
     break;
 
+  case Value::TRIPLE_DOUBLE:
+    stringStream << this->_value.value.triple_double_values[0] << ","
+        << this->_value.value.triple_double_values[1] << ","
+        << this->_value.value.triple_double_values[2];
+    break;
+
   case Value::NOT_SET:
   default:
     stringStream << "Value not set !";
@@ -333,6 +360,13 @@
     result._value.type = Value::TIME;
     break;
 
+  case Value::TRIPLE_DOUBLE:
+    result._value.value.triple_double_values[0] = this->_value.value.triple_double_values[0] - otherValue._value.value.triple_double_values[0];
+    result._value.value.triple_double_values[1] = this->_value.value.triple_double_values[1] - otherValue._value.value.triple_double_values[1];
+    result._value.value.triple_double_values[2] = this->_value.value.triple_double_values[2] - otherValue._value.value.triple_double_values[2];
+    result._value.type = Value::TRIPLE_DOUBLE;
+    break;
+
   default:
     result._value.type = Value::NOT_SET;
     break;
@@ -439,6 +473,30 @@
     return (double_result > delta._value.value.time_value);
     break;
 
+  case Value::TRIPLE_DOUBLE:
+    double_result = this->_value.value.triple_double_values[0] - valueToSubstract._value.value.triple_double_values[0];
+    if (double_result < 0) {
+      double_result = -double_result;
+    }
+    if (double_result > delta._value.value.triple_double_values[0]) {
+        return true;
+    }
+
+    double_result = this->_value.value.triple_double_values[1] - valueToSubstract._value.value.triple_double_values[1];
+    if (double_result < 0) {
+      double_result = -double_result;
+    }
+    if (double_result > delta._value.value.triple_double_values[1]) {
+        return true;
+    }
+
+    double_result = this->_value.value.triple_double_values[2] - valueToSubstract._value.value.triple_double_values[2];
+    if (double_result < 0) {
+      double_result = -double_result;
+    }
+    return (double_result > delta._value.value.triple_double_values[2]);
+    break;
+
   default:
     return true;
     break;
@@ -496,6 +554,12 @@
     return (this->_value.value.time_value != otherValue._value.value.time_value);
     break;
 
+  case Value::TRIPLE_DOUBLE:
+    return ((this->_value.value.triple_double_values[0] != otherValue._value.value.triple_double_values[0])
+        && (this->_value.value.triple_double_values[1] != otherValue._value.value.triple_double_values[1])
+        && (this->_value.value.triple_double_values[2] != otherValue._value.value.triple_double_values[2]));
+    break;
+
   default:
     return true;
     break;