#ifndef TEST_TESTTASK_H_ #define TEST_TESTTASK_H_ #include #include #include #include #include #include #include #include /** * @brief Test class for general C++ testing. * @details * Should not be used for board specific * tests. Instead, a derived board test class should be used. */ class TestTask : public SystemObject, public ExecutableObjectIF, public HasReturnvaluesIF { public: TestTask(object_id_t objectId); virtual ~TestTask(); virtual ReturnValue_t performOperation(uint8_t operationCode = 0); protected: virtual ReturnValue_t performOneShotAction(); virtual ReturnValue_t performPeriodicAction(); virtual ReturnValue_t performActionA(); virtual ReturnValue_t performActionB(); enum testModes: uint8_t { A, B }; testModes testMode; bool testFlag = false; uint8_t counter { 1 }; uint8_t counterTrigger { 3 }; void performPusInjectorTest(); void examplePacketTest(); private: // Actually, to be really thread-safe, a mutex should be used as well // Let's keep it simple for now. static bool oneShotAction; static MutexIF* testLock; StorageManagerIF* IPCStore; }; #endif /* TESTTASK_H_ */