#include #include #include #include #include #include #include #include #include #include class HkDummy : public SystemObject, public AcceptsHkPacketsIF { public: HkDummy() : SystemObject(objects::PUS_SERVICE_3_HOUSEKEEPING) {} virtual MessageQueueId_t getHkQueue() const { return MessageQueueIF::NO_QUEUE; } }; void factory(void* args) { new HkDummy(); new HealthTable(objects::HEALTH_TABLE); new InternalErrorReporter(objects::INTERNAL_ERROR_REPORTER); new TimeStamper(objects::TIME_STAMPER); { PoolManager::LocalPoolConfig poolCfg = {{300, 16}, {200, 32}, {150, 64}, {150, 128}, {100, 256}, {50, 512}, {50, 1024}, {10, 2048}}; new PoolManager(objects::IPC_STORE, poolCfg); } } TEST_CASE("Thermal Controller", "[ThermalController]") { const object_id_t THERMAL_CONTROLLER_ID = 0x123; ThermalController controller(THERMAL_CONTROLLER_ID, objects::NO_OBJECT); ObjectManager::instance()->setObjectFactoryFunction(factory, nullptr); ObjectManager::instance()->initialize(); ObjectManager::instance()->printList(); controller.initializeAfterTaskCreation(); MessageQueueId_t controllerQueue = controller.getCommandQueue(); CommandMessage modeMessage; ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND, ControllerBase::MODE_NORMAL, HasModesIF::SUBMODE_NONE); MessageQueueIF* commandQueue = QueueFactory::instance()->createMessageQueue( 5, MessageQueueMessage::MAX_MESSAGE_SIZE); commandQueue->sendMessage(controllerQueue,&modeMessage); REQUIRE(controller.performOperation(0) == HasReturnvaluesIF::RETURN_OK); thermalControllerDefinitions::ComponentTemperatures componentTemperatures(THERMAL_CONTROLLER_ID); componentTemperatures.read(); REQUIRE(componentTemperatures.rw == 0); componentTemperatures.commit(); QueueFactory::instance()->deleteMessageQueue(commandQueue); }