#ifndef LINUX_BOARDTEST_UARTTESTCLASS_H_ #define LINUX_BOARDTEST_UARTTESTCLASS_H_ #include <fsfw/globalfunctions/DleEncoder.h> #include <termios.h> // Contains POSIX terminal control definitions #include <array> #include "lwgps/lwgps.h" #include "test/testtasks/TestTask.h" class UartTestClass : public TestTask { public: UartTestClass(object_id_t objectId); ReturnValue_t initialize() override; ReturnValue_t performOneShotAction() override; ReturnValue_t performPeriodicAction() override; private: enum TestModes { GPS, // Solar Cell Experiment SCEX }; void gpsInit(); void gpsPeriodic(); void scexInit(); void scexPeriodic(); int prepareScexPing(); TestModes mode = TestModes::GPS; DleEncoder dleEncoder = DleEncoder(); size_t encodedLen = 0; lwgps_t gpsData = {}; struct termios tty = {}; int serialPort = 0; std::array<uint8_t, 64> cmdBuf = {}; std::array<uint8_t, 4096> recBuf = {}; uint8_t recvCnt = 0; }; #endif /* LINUX_BOARDTEST_UARTTESTCLASS_H_ */