|
|
|
@ -8,6 +8,7 @@
|
|
|
|
|
#include <linux/obc/PtmeConfig.h>
|
|
|
|
|
#include <mission/system/AcsBoardFdir.h>
|
|
|
|
|
#include <mission/system/SusAssembly.h>
|
|
|
|
|
#include <mission/system/SusFdir.h>
|
|
|
|
|
|
|
|
|
|
#include "OBSWConfig.h"
|
|
|
|
|
#include "bsp_q7s/boardtest/Q7STestTask.h"
|
|
|
|
@ -137,7 +138,7 @@ void ObjectFactory::produce(void* args) {
|
|
|
|
|
gpioCallbacks::disableAllDecoder();
|
|
|
|
|
createPcduComponents(gpioComIF, &pwrSwitcher);
|
|
|
|
|
createRadSensorComponent(gpioComIF);
|
|
|
|
|
createSunSensorComponents(gpioComIF, spiComIF);
|
|
|
|
|
createSunSensorComponents(gpioComIF, spiComIF, pwrSwitcher);
|
|
|
|
|
|
|
|
|
|
#if OBSW_ADD_ACS_BOARD == 1
|
|
|
|
|
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
|
|
|
|
@ -323,7 +324,7 @@ void ObjectFactory::createRadSensorComponent(LinuxLibgpioIF* gpioComIF) {
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ObjectFactory::createSunSensorComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF) {
|
|
|
|
|
void ObjectFactory::createSunSensorComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF, PowerSwitchIF* pwrSwitcher) {
|
|
|
|
|
using namespace gpio;
|
|
|
|
|
GpioCookie* gpioCookieSus = new GpioCookie();
|
|
|
|
|
GpioCallback* susgpio = nullptr;
|
|
|
|
@ -367,118 +368,124 @@ void ObjectFactory::createSunSensorComponents(LinuxLibgpioIF* gpioComIF, SpiComI
|
|
|
|
|
|
|
|
|
|
gpioComIF->addGpios(gpioCookieSus);
|
|
|
|
|
|
|
|
|
|
SusFdir* fdir = nullptr;
|
|
|
|
|
std::array<SusHandler*, 12> susHandlers = {};
|
|
|
|
|
#if OBSW_ADD_SUN_SENSORS == 1
|
|
|
|
|
SpiCookie* spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_0, gpioIds::CS_SUS_0, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler0 = new SusHandler(objects::SUS_0, 0, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[0] = new SusHandler(objects::SUS_0, 0, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_0);
|
|
|
|
|
susHandlers[0]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[0]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_1, gpioIds::CS_SUS_1, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler1 = new SusHandler(objects::SUS_1, 1, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[1] = new SusHandler(objects::SUS_1, 1, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_1);
|
|
|
|
|
susHandlers[1]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[1]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_2, gpioIds::CS_SUS_2, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler2 = new SusHandler(objects::SUS_2, 2, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[2] = new SusHandler(objects::SUS_2, 2, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_2);
|
|
|
|
|
susHandlers[2]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[2]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_3, gpioIds::CS_SUS_3, std::string(q7s::SPI_DEFAULT_DEV),
|
|
|
|
|
SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler3 = new SusHandler(objects::SUS_3, 3, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[3] = new SusHandler(objects::SUS_3, 3, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_3);
|
|
|
|
|
susHandlers[3]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[3]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_4, gpioIds::CS_SUS_4, std::string(q7s::SPI_DEFAULT_DEV),
|
|
|
|
|
SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler4 = new SusHandler(objects::SUS_4, 4, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[4] = new SusHandler(objects::SUS_4, 4, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_4);
|
|
|
|
|
susHandlers[4]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[4]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_5, gpioIds::CS_SUS_5, std::string(q7s::SPI_DEFAULT_DEV),
|
|
|
|
|
SUS::MAX_CMD_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler5 = new SusHandler(objects::SUS_5, 5, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[5] = new SusHandler(objects::SUS_5, 5, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_5);
|
|
|
|
|
susHandlers[5]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[5]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_6, gpioIds::CS_SUS_6, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler6 = new SusHandler(objects::SUS_6, 6, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[6] = new SusHandler(objects::SUS_6, 6, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_6);
|
|
|
|
|
susHandlers[6]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[6]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_7, gpioIds::CS_SUS_7, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler7 = new SusHandler(objects::SUS_7, 7, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[7] = new SusHandler(objects::SUS_7, 7, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_7);
|
|
|
|
|
susHandlers[7]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[7]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_8, gpioIds::CS_SUS_8, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler8 = new SusHandler(objects::SUS_8, 8, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[8] = new SusHandler(objects::SUS_8, 8, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_8);
|
|
|
|
|
susHandlers[8]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[8]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_9, gpioIds::CS_SUS_9, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler9 = new SusHandler(objects::SUS_9, 9, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[9] = new SusHandler(objects::SUS_9, 9, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_9);
|
|
|
|
|
susHandlers[9]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[9]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_10, gpioIds::CS_SUS_10, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler10 = new SusHandler(objects::SUS_10, 10, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
susHandlers[10] = new SusHandler(objects::SUS_10, 10, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_10);
|
|
|
|
|
susHandlers[10]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[10]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
spiCookie =
|
|
|
|
|
new SpiCookie(addresses::SUS_11, gpioIds::CS_SUS_11, q7s::SPI_DEFAULT_DEV, SUS::MAX_CMD_SIZE,
|
|
|
|
|
spi::DEFAULT_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
|
|
|
SusHandler* susHandler11 = new SusHandler(objects::SUS_11, 11, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
static_cast<void>(susHandler0);
|
|
|
|
|
static_cast<void>(susHandler1);
|
|
|
|
|
static_cast<void>(susHandler2);
|
|
|
|
|
static_cast<void>(susHandler3);
|
|
|
|
|
static_cast<void>(susHandler4);
|
|
|
|
|
static_cast<void>(susHandler5);
|
|
|
|
|
static_cast<void>(susHandler6);
|
|
|
|
|
static_cast<void>(susHandler7);
|
|
|
|
|
static_cast<void>(susHandler8);
|
|
|
|
|
static_cast<void>(susHandler9);
|
|
|
|
|
static_cast<void>(susHandler10);
|
|
|
|
|
static_cast<void>(susHandler11);
|
|
|
|
|
susHandlers[11] = new SusHandler(objects::SUS_11, 11, objects::SPI_COM_IF, spiCookie);
|
|
|
|
|
fdir = new SusFdir(objects::SUS_11);
|
|
|
|
|
susHandlers[11]->setParent(objects::SUS_BOARD_ASS);
|
|
|
|
|
susHandlers[11]->setCustomFdir(fdir);
|
|
|
|
|
|
|
|
|
|
for(auto& sus: susHandlers) {
|
|
|
|
|
if(sus != nullptr) {
|
|
|
|
|
#if OBSW_TEST_SUS == 1
|
|
|
|
|
susHandler0->setStartUpImmediately();
|
|
|
|
|
susHandler1->setStartUpImmediately();
|
|
|
|
|
susHandler2->setStartUpImmediately();
|
|
|
|
|
susHandler3->setStartUpImmediately();
|
|
|
|
|
susHandler4->setStartUpImmediately();
|
|
|
|
|
susHandler5->setStartUpImmediately();
|
|
|
|
|
susHandler6->setStartUpImmediately();
|
|
|
|
|
susHandler7->setStartUpImmediately();
|
|
|
|
|
susHandler8->setStartUpImmediately();
|
|
|
|
|
susHandler9->setStartUpImmediately();
|
|
|
|
|
susHandler10->setStartUpImmediately();
|
|
|
|
|
susHandler11->setStartUpImmediately();
|
|
|
|
|
susHandler0->setToGoToNormalMode(true);
|
|
|
|
|
susHandler1->setToGoToNormalMode(true);
|
|
|
|
|
susHandler2->setToGoToNormalMode(true);
|
|
|
|
|
susHandler3->setToGoToNormalMode(true);
|
|
|
|
|
susHandler4->setToGoToNormalMode(true);
|
|
|
|
|
susHandler5->setToGoToNormalMode(true);
|
|
|
|
|
susHandler6->setToGoToNormalMode(true);
|
|
|
|
|
susHandler7->setToGoToNormalMode(true);
|
|
|
|
|
susHandler8->setToGoToNormalMode(true);
|
|
|
|
|
susHandler9->setToGoToNormalMode(true);
|
|
|
|
|
susHandler10->setToGoToNormalMode(true);
|
|
|
|
|
susHandler11->setToGoToNormalMode(true);
|
|
|
|
|
sus->setStartUpImmediately();
|
|
|
|
|
sus->setToGoToNormalMode(true);
|
|
|
|
|
#endif
|
|
|
|
|
#if OBSW_DEBUG_SUS == 1
|
|
|
|
|
susHandler0->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler1->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler2->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler3->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler4->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler5->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler6->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler7->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler8->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler9->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler10->enablePeriodicPrintout(true, 3);
|
|
|
|
|
susHandler11->enablePeriodicPrintout(true, 3);
|
|
|
|
|
sus->enablePeriodicPrintout(true, 3);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
std::array<object_id_t, 12> susIds = {objects::SUS_0, objects::SUS_1, objects::SUS_2,
|
|
|
|
|
objects::SUS_3, objects::SUS_4, objects::SUS_5,
|
|
|
|
|
objects::SUS_6, objects::SUS_7, objects::SUS_8,
|
|
|
|
|
objects::SUS_9, objects::SUS_10, objects::SUS_11};
|
|
|
|
|
SusAssHelper susAssHelper = SusAssHelper(susIds);
|
|
|
|
|
auto susAss =
|
|
|
|
|
new SusAssembly(objects::SUS_BOARD_ASS, objects::NO_OBJECT, pwrSwitcher, susAssHelper);
|
|
|
|
|
static_cast<void>(susAss);
|
|
|
|
|
#endif /* OBSW_ADD_SUN_SENSORS == 1 */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -583,6 +590,7 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|
|
|
|
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_SELECT, gpio);
|
|
|
|
|
gpioComIF->addGpios(gpioCookieAcsBoard);
|
|
|
|
|
AcsBoardFdir* fdir = nullptr;
|
|
|
|
|
static_cast<void>(fdir);
|
|
|
|
|
|
|
|
|
|
#if OBSW_ADD_ACS_HANDLERS == 1
|
|
|
|
|
std::string spiDev = q7s::SPI_DEFAULT_DEV;
|
|
|
|
@ -739,14 +747,6 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|
|
|
|
auto acsAss = new AcsBoardAssembly(objects::ACS_BOARD_ASS, objects::NO_OBJECT, pwrSwitcher,
|
|
|
|
|
acsBoardHelper, gpioComIF);
|
|
|
|
|
static_cast<void>(acsAss);
|
|
|
|
|
std::array<object_id_t, 12> susIds = {objects::SUS_0, objects::SUS_1, objects::SUS_2,
|
|
|
|
|
objects::SUS_3, objects::SUS_4, objects::SUS_5,
|
|
|
|
|
objects::SUS_6, objects::SUS_7, objects::SUS_8,
|
|
|
|
|
objects::SUS_9, objects::SUS_10, objects::SUS_11};
|
|
|
|
|
SusAssHelper susAssHelper = SusAssHelper(susIds);
|
|
|
|
|
auto susAss =
|
|
|
|
|
new SusAssembly(objects::SUS_BOARD_ASS, objects::NO_OBJECT, pwrSwitcher, susAssHelper);
|
|
|
|
|
static_cast<void>(susAss);
|
|
|
|
|
#if OBSW_TEST_ACS_BOARD_ASS == 1
|
|
|
|
|
CommandMessage msg;
|
|
|
|
|
ModeMessage::setModeMessage(&msg, ModeMessage::CMD_MODE_COMMAND, DeviceHandlerIF::MODE_NORMAL,
|
|
|
|
|