#ifndef POLLINGSEQUENCEFACTORY_H_ #define POLLINGSEQUENCEFACTORY_H_ #include "OBSWConfig.h" #if defined(RASPBERRY_PI) #include "rpiConfig.h" #elif defined(XIPHOS_Q7S) #include "q7sConfig.h" #endif #include "fsfw/returnvalues/returnvalue.h" class FixedTimeslotTaskIF; /** * All device handlers are scheduled by adding them into * Polling Sequence Tables (PST) to satisfy stricter timing requirements of * device communication, a device handler has four different communication steps: * 1. DeviceHandlerIF::SEND_WRITE -> Send write via interface * 2. DeviceHandlerIF::GET_WRITE -> Get confirmation for write * 3. DeviceHandlerIF::SEND_READ -> Send read request * 4. DeviceHandlerIF::GET_READ -> Read from interface * The PST specifies precisely when the respective ComIF functions are called * during the communication cycle time. * The task is created using the FixedTimeslotTaskIF, * which utilises the underlying Operating System Abstraction Layer (OSAL) * * @param thisSequence FixedTimeslotTaskIF * object is passed inside the * Factory class when creating the PST * @return */ namespace pst { struct AcsPstCfg { bool scheduleAcsBoard = true; bool scheduleImtq = true; bool scheduleRws = true; bool scheduleSus = true; bool scheduleStr = true; }; // Default config is for FM. struct TmpSchedConfig { bool scheduleTmpDev0 = true; bool scheduleTmpDev1 = true; bool schedulePlPcduDev0 = true; // damaged on FM bool schedulePlPcduDev1 = false; bool scheduleIfBoardDev = true; }; /** * @brief This function creates the PST for all gomspace devices. * @details * Scheduled in a separate PST because the gomspace library uses blocking calls when requesting * data from devices. */ ReturnValue_t pstGompaceCan(FixedTimeslotTaskIF* thisSequence); ReturnValue_t pstSyrlinks(FixedTimeslotTaskIF* thisSequence); ReturnValue_t pstTcsAndAcs(FixedTimeslotTaskIF* thisSequence, AcsPstCfg cfg); ReturnValue_t pstI2c(TmpSchedConfig schedConf, FixedTimeslotTaskIF* thisSequence); ReturnValue_t pstPayload(FixedTimeslotTaskIF* thisSequence); /** * Generic test PST * @param thisSequence * @return */ ReturnValue_t pstTest(FixedTimeslotTaskIF* thisSequence); } // namespace pst #endif /* POLLINGSEQUENCEINIT_H_ */