Robin Mueller
55a22c840c
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
85 lines
3.2 KiB
C++
85 lines
3.2 KiB
C++
#ifndef BSP_Q7S_OBJECTFACTORY_H_
|
|
#define BSP_Q7S_OBJECTFACTORY_H_
|
|
|
|
#include <fsfw/returnvalues/returnvalue.h>
|
|
#include <fsfw_hal/linux/spi/SpiComIF.h>
|
|
#include <mission/com/CcsdsIpCoreHandler.h>
|
|
#include <mission/com/PersistentLogTmStoreTask.h>
|
|
#include <mission/genericFactory.h>
|
|
#include <mission/system/objects/Stack5VHandler.h>
|
|
#include <mission/tcs/HeaterHandler.h>
|
|
#include <mission/tmtc/CfdpTmFunnel.h>
|
|
#include <mission/tmtc/PusTmFunnel.h>
|
|
|
|
#include <atomic>
|
|
#include <string>
|
|
|
|
class LinuxLibgpioIF;
|
|
class SerialComIF;
|
|
class SpiComIF;
|
|
class I2cComIF;
|
|
class PowerSwitchIF;
|
|
class HealthTableIF;
|
|
class AcsBoardAssembly;
|
|
class GpioIF;
|
|
|
|
extern std::atomic_uint16_t I2C_FATAL_ERRORS;
|
|
extern std::atomic_bool PTME_LOCKED;
|
|
|
|
namespace ObjectFactory {
|
|
|
|
struct CcsdsComponentArgs {
|
|
CcsdsComponentArgs(LinuxLibgpioIF& gpioIF, StorageManagerIF& ipcStore, StorageManagerIF& tmStore,
|
|
PersistentTmStores& stores, PusTmFunnel& pusFunnel, CfdpTmFunnel& cfdpFunnel,
|
|
CcsdsIpCoreHandler** ipCoreHandler)
|
|
: gpioComIF(gpioIF),
|
|
ipcStore(ipcStore),
|
|
tmStore(tmStore),
|
|
stores(stores),
|
|
pusFunnel(pusFunnel),
|
|
cfdpFunnel(cfdpFunnel),
|
|
ipCoreHandler(ipCoreHandler) {}
|
|
LinuxLibgpioIF& gpioComIF;
|
|
StorageManagerIF& ipcStore;
|
|
StorageManagerIF& tmStore;
|
|
PersistentTmStores& stores;
|
|
PusTmFunnel& pusFunnel;
|
|
CfdpTmFunnel& cfdpFunnel;
|
|
CcsdsIpCoreHandler** ipCoreHandler;
|
|
AcceptsTelemetryIF* liveDestination = nullptr;
|
|
};
|
|
|
|
void setStatics();
|
|
void produce(void* args);
|
|
|
|
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, SerialComIF** uartComIF,
|
|
SpiComIF** spiMainComIF, I2cComIF** i2cComIF);
|
|
void createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher,
|
|
bool enableHkSets);
|
|
void createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
|
|
PowerSwitchIF* pwrSwitcher, Stack5VHandler& stackHandler);
|
|
void createTmpComponents();
|
|
ReturnValue_t createRadSensorComponent(LinuxLibgpioIF* gpioComIF, Stack5VHandler& handler);
|
|
void createAcsBoardGpios(GpioCookie& cookie);
|
|
void createAcsBoardComponents(SpiComIF& spiComIF, LinuxLibgpioIF* gpioComIF, SerialComIF* uartComIF,
|
|
PowerSwitchIF& pwrSwitcher);
|
|
void createHeaterComponents(GpioIF* gpioIF, PowerSwitchIF* pwrSwitcher, HealthTableIF* healthTable,
|
|
HeaterHandler*& heaterHandler);
|
|
void createImtqComponents(PowerSwitchIF* pwrSwitcher, bool enableHkSets);
|
|
void createBpxBatteryComponent(bool enableHkSets);
|
|
void createStrComponents(PowerSwitchIF* pwrSwitcher);
|
|
void createSolarArrayDeploymentComponents(PowerSwitchIF& pwrSwitcher, GpioIF& gpioIF);
|
|
void createSyrlinksComponents(PowerSwitchIF* pwrSwitcher);
|
|
void createPayloadComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF& pwrSwitcher);
|
|
void createReactionWheelComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF* pwrSwitcher);
|
|
ReturnValue_t createCcsdsComponents(CcsdsComponentArgs& args);
|
|
void createMiscComponents();
|
|
|
|
void createTestComponents(LinuxLibgpioIF* gpioComIF);
|
|
|
|
void testAcsBrdAss(AcsBoardAssembly* assAss);
|
|
|
|
}; // namespace ObjectFactory
|
|
|
|
#endif /* BSP_Q7S_OBJECTFACTORY_H_ */
|