#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/HasReturnvaluesIF.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 { /* 0.4 second period init*/ ReturnValue_t pstGpio(FixedTimeslotTaskIF* thisSequence); /** * @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 pstUart(FixedTimeslotTaskIF* thisSequence); ReturnValue_t pstSpi(FixedTimeslotTaskIF* thisSequence); ReturnValue_t pstSpiRw(FixedTimeslotTaskIF* thisSequence); ReturnValue_t pstI2c(FixedTimeslotTaskIF* thisSequence); /** * Generic test PST * @param thisSequence * @return */ ReturnValue_t pstTest(FixedTimeslotTaskIF* thisSequence); } // namespace pst #endif /* POLLINGSEQUENCEINIT_H_ */