diff --git a/bsp_q7s/boardtest/Q7STestTask.cpp b/bsp_q7s/boardtest/Q7STestTask.cpp index ca64c8a6..a1470b79 100644 --- a/bsp_q7s/boardtest/Q7STestTask.cpp +++ b/bsp_q7s/boardtest/Q7STestTask.cpp @@ -3,6 +3,8 @@ #include "fsfw/timemanager/Stopwatch.h" #include "fsfw/tasks/TaskFactory.h" +#include "bsp_q7s/memory/scratchApi.h" + #include #include #include @@ -12,6 +14,7 @@ Q7STestTask::Q7STestTask(object_id_t objectId): TestTask(objectId) { ReturnValue_t Q7STestTask::performOneShotAction() { //sdCardTests(); + testScratchApi(); return TestTask::performOneShotAction(); } @@ -50,3 +53,15 @@ void Q7STestTask::fileTests() { system("echo \"Hallo Welt\" > /tmp/test2.txt"); system("echo \"Hallo Welt\""); } + +void Q7STestTask::testScratchApi() { + ReturnValue_t result = scratch::writeNumber("TEST", 1); + if(result != HasReturnvaluesIF::RETURN_OK) { + sif::debug << "Q7STestTask::scratchApiTest: Writing number failed" << std::endl; + } + int number = 0; + result = scratch::readNumber("TEST", number); + if(result != HasReturnvaluesIF::RETURN_OK) { + sif::debug << "Q7STestTask::scratchApiTest: Reading number failed" << std::endl; + } +} diff --git a/bsp_q7s/boardtest/Q7STestTask.h b/bsp_q7s/boardtest/Q7STestTask.h index 7056853e..664a8fa2 100644 --- a/bsp_q7s/boardtest/Q7STestTask.h +++ b/bsp_q7s/boardtest/Q7STestTask.h @@ -11,6 +11,9 @@ private: void sdCardTests(); void fileTests(); + + void testScratchApi(); + }; diff --git a/bsp_q7s/memory/SdCardManager.cpp b/bsp_q7s/memory/SdCardManager.cpp index d23a4331..6a7c5585 100644 --- a/bsp_q7s/memory/SdCardManager.cpp +++ b/bsp_q7s/memory/SdCardManager.cpp @@ -66,7 +66,7 @@ ReturnValue_t SdCardManager::setSdCardState(sd::SdCard sdCard, bool on) { statestring = "off"; } std::ostringstream command; - command << "h7hw sd set " << sdstring << " " << statestring; + command << "q7hw sd set " << sdstring << " " << statestring; int result = std::system(command.str().c_str()); if(result == 0) { return HasReturnvaluesIF::RETURN_OK; diff --git a/bsp_q7s/memory/scratchApi.h b/bsp_q7s/memory/scratchApi.h index 32e604a1..246515a1 100644 --- a/bsp_q7s/memory/scratchApi.h +++ b/bsp_q7s/memory/scratchApi.h @@ -2,9 +2,11 @@ #define BSP_Q7S_MEMORY_SCRATCHAPI_H_ #include "fsfw/returnvalues/HasReturnvaluesIF.h" +#include "fsfw/serviceinterface/ServiceInterface.h" #include "linux/utility/utility.h" #include +#include #include #include #include @@ -18,10 +20,11 @@ namespace { static size_t counter = 0; } -template::value>::type> +template::value>::type> inline ReturnValue_t writeNumber(std::string name, T num) noexcept { std::ostringstream oss; oss << "xsc_scratch write " << name << " " << num; + sif::debug << oss.str() << std::endl; int result = std::system(oss.str().c_str()); if(result != 0) { utility::handleSystemError(result, "scratch::writeNumber"); @@ -30,15 +33,28 @@ inline ReturnValue_t writeNumber(std::string name, T num) noexcept { return HasReturnvaluesIF::RETURN_OK; } -template::value>::type> +template::value>::type> inline ReturnValue_t readNumber(std::string name, T& num) noexcept { - std::ostringstream oss; - oss << "xsc_scratch read " << name << " > /tmp/scratchro" << counter++; + using namespace std; + string filename = "/tmp/sro" + counter++; + ostringstream oss; + oss << "xsc_scratch read " << name << " < " << filename; + sif::debug << oss.str() << std::endl; int result = std::system(oss.str().c_str()); if(result != 0) { utility::handleSystemError(result, "scratch::writeNumber"); return HasReturnvaluesIF::RETURN_FAILED; } + ifstream file(filename); + string line; + if (not std::getline(file, line)) { + return HasReturnvaluesIF::RETURN_FAILED; + } + + size_t pos = line.find("="); + std::string valueAsString = line.substr(pos); + sif::debug << valueAsString << std::endl; + num = std::stoi(valueAsString); return HasReturnvaluesIF::RETURN_OK; }