eive-obsw/mission/core/GenericFactory.h

67 lines
2.8 KiB
C
Raw Normal View History

2020-11-20 18:10:39 +01:00
#ifndef MISSION_CORE_GENERICFACTORY_H_
#define MISSION_CORE_GENERICFACTORY_H_
2023-02-13 11:49:26 +01:00
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
2023-02-20 15:17:31 +01:00
#include <mission/memory/SdCardMountedIF.h>
2023-03-09 19:42:20 +01:00
#include <mission/tmtc/PersistentTmStoreWithTmQueue.h>
2022-12-13 14:19:43 +01:00
2023-02-13 11:49:26 +01:00
#include "fsfw/objectmanager/SystemObjectIF.h"
2022-11-24 19:41:57 +01:00
#include "fsfw/power/PowerSwitchIF.h"
2022-11-25 10:13:24 +01:00
#include "fsfw_hal/common/gpio/GpioIF.h"
2023-02-13 17:04:04 +01:00
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
2022-11-24 19:41:57 +01:00
class HeaterHandler;
2022-05-02 17:37:00 +02:00
class HealthTableIF;
class PusTmFunnel;
class CfdpTmFunnel;
2023-02-13 13:53:13 +01:00
class ExtendedControllerBase;
2023-02-13 17:04:04 +01:00
class TcsBoardAssembly;
const std::array<std::pair<object_id_t, std::string>, EiveMax31855::NUM_RTDS> RTD_INFOS = {{
{objects::RTD_0_IC3_PLOC_HEATSPREADER, "RTD_0_PLOC_HSPD"},
{objects::RTD_1_IC4_PLOC_MISSIONBOARD, "RTD_1_PLOC_MISSIONBRD"},
{objects::RTD_2_IC5_4K_CAMERA, "RTD_2_4K_CAMERA"},
{objects::RTD_3_IC6_DAC_HEATSPREADER, "RTD_3_DAC_HSPD"},
{objects::RTD_4_IC7_STARTRACKER, "RTD_4_STARTRACKER"},
{objects::RTD_5_IC8_RW1_MX_MY, "RTD_5_RW1_MX_MY"},
{objects::RTD_6_IC9_DRO, "RTD_6_DRO"},
{objects::RTD_7_IC10_SCEX, "RTD_7_SCEX"},
{objects::RTD_8_IC11_X8, "RTD_8_X8"},
{objects::RTD_9_IC12_HPA, "RTD_9_HPA"},
{objects::RTD_10_IC13_PL_TX, "RTD_10_PL_TX,"},
{objects::RTD_11_IC14_MPA, "RTD_11_MPA"},
{objects::RTD_12_IC15_ACU, "RTD_12_ACU"},
{objects::RTD_13_IC16_PLPCDU_HEATSPREADER, "RTD_13_PLPCDU_HSPD"},
{objects::RTD_14_IC17_TCS_BOARD, "RTD_14_TCS_BOARD"},
{objects::RTD_15_IC18_IMTQ, "RTD_15_IMTQ"},
}};
2022-05-02 17:37:00 +02:00
2023-03-09 19:42:20 +01:00
struct PersistentTmStores {
PersistentTmStoreWithTmQueue* okStore;
PersistentTmStoreWithTmQueue* notOkStore;
PersistentTmStoreWithTmQueue* miscStore;
PersistentTmStoreWithTmQueue* hkStore;
PersistentTmStoreWithTmQueue* cfdpStore;
};
2020-11-20 18:10:39 +01:00
namespace ObjectFactory {
void produceGenericObjects(HealthTableIF** healthTable, PusTmFunnel** pusFunnel,
2023-03-09 19:42:20 +01:00
CfdpTmFunnel** cfdpFunnel, SdCardMountedIF& sdcMan,
StorageManagerIF** ipcStore, StorageManagerIF** tmStore,
PersistentTmStores& stores);
2022-11-25 10:13:24 +01:00
void createGenericHeaterComponents(GpioIF& gpioIF, PowerSwitchIF& pwrSwitcher,
HeaterHandler*& heaterHandler);
2020-11-20 18:10:39 +01:00
2022-11-24 19:41:57 +01:00
void createThermalController(HeaterHandler& heaterHandler);
2023-02-13 11:49:26 +01:00
void createRwAssy(PowerSwitchIF& pwrSwitcher, power::Switch_t theSwitch,
std::array<DeviceHandlerBase*, 4> rws, std::array<object_id_t, 4> rwIds);
void createSusAssy(PowerSwitchIF& pwrSwitcher, std::array<DeviceHandlerBase*, 12> suses);
2023-02-13 13:53:13 +01:00
void createAcsBoardAssy(PowerSwitchIF& pwrSwitcher, std::array<DeviceHandlerBase*, 8> assemblyDhbs,
ExtendedControllerBase* gpsCtrl, GpioIF* gpioComIF);
2023-02-13 17:04:04 +01:00
TcsBoardAssembly* createTcsBoardAssy(PowerSwitchIF& pwrSwitcher);
2020-11-20 18:10:39 +01:00
2022-11-25 10:13:24 +01:00
} // namespace ObjectFactory
2020-11-20 18:10:39 +01:00
#endif /* MISSION_CORE_GENERICFACTORY_H_ */