diff --git a/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp b/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp index 22e4ff72..e9abf7c9 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp @@ -402,7 +402,7 @@ void ClassFlowPostProcessing::handleAllowNegativeRate(string _decsep, string _va _digit = _decsep.substr(0, _pospunkt); else _digit = "default"; - + for (int j = 0; j < NUMBERS.size(); ++j) { bool _rt = false; @@ -841,6 +841,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) if (!NUMBERS[j]->AllowNegativeRates) { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handleAllowNegativeRate for device: " + NUMBERS[j]->name); if ((NUMBERS[j]->Value < NUMBERS[j]->PreValue)) { #ifdef SERIAL_DEBUG @@ -848,6 +849,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma)) ) ; #endif + // Include inaccuracy of 0.2 for isExtendedResolution. if (NUMBERS[j]->Value >= (NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma))) && NUMBERS[j]->isExtendedResolution) { NUMBERS[j]->Value = NUMBERS[j]->PreValue; diff --git a/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp b/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp index 87ee56b2..5af4c766 100644 --- a/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp +++ b/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp @@ -76,3 +76,30 @@ void testNegative() { } +/** + * @brief Fehlerberichte aus Issues + * + */ +void testNegative_Issues() { + // Ohne decimal_shift + std::vector digits = { 2.0, 2.0, 0.0, 1.0, 7.2, 9.0, 8.0}; + std::vector analogs = { }; + double preValue_extended = 22018.080; + double preValue = 22018.08; + + const char* expected = "22017.98"; + + // https://github.com/jomjol/AI-on-the-edge-device/issues/2145#issuecomment-1461899094 + // extendResolution=false + // value < preValue + // Prüfung eingeschaltet => Fehler + preValue = 22018.08; // zu groß + UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digital100, false, false, -2); + setAllowNegatives(underTestPost, false); + setPreValue(underTestPost, preValue_extended); + std::string result = process_doFlow(underTestPost); + TEST_ASSERT_EQUAL_STRING("Neg. Rate - Read: - Raw: 22017.98 - Pre: 22018.08 ", underTestPost->getReadoutError().c_str()); + TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); + delete underTestPost; + +} \ No newline at end of file diff --git a/code/test/test_suite_flowcontroll.cpp b/code/test/test_suite_flowcontroll.cpp index 93a459a0..8c36cc1a 100644 --- a/code/test/test_suite_flowcontroll.cpp +++ b/code/test/test_suite_flowcontroll.cpp @@ -108,9 +108,9 @@ extern "C" void app_main() esp_log_level_set("*", ESP_LOG_DEBUG); // set all components to ERROR level UNITY_BEGIN(); - - RUN_TEST(testNegative); - + RUN_TEST(testNegative_Issues); + /* RUN_TEST(testNegative); + RUN_TEST(test_analogToDigit_Standard); RUN_TEST(test_analogToDigit_Transition); RUN_TEST(test_doFlowPP); @@ -121,6 +121,6 @@ extern "C" void app_main() // getReadoutRawString test RUN_TEST(test_getReadoutRawString); - + */ UNITY_END(); } diff --git a/sd-card/config/dig-class100_0160_s2_q.tflite b/sd-card/config/dig-class100_0160_s2_q.tflite new file mode 100644 index 00000000..a1769322 Binary files /dev/null and b/sd-card/config/dig-class100_0160_s2_q.tflite differ