/* HELP */ #include #include #include #include #include ThermalController::ThermalController(object_id_t objectId, object_id_t powerSwitcher, size_t commandQueueDepth): ControllerBase(objectId, 0, commandQueueDepth), powerSwitcherId(powerSwitcher), TempValueVec(datapool::Temperature_value, &SensorData, PoolVariableIF::VAR_READ), TEMPERATURE_SENSOR_CH1(objects::TCS_SENSOR_CH1, &TempValueVec[0], &TempValueVec, 0, TEMPERATURE_SENSOR_CONFIG, datapool::TempValidity_SENSOR_CH1, &SensorData, NULL), TEMPERATURE_SENSOR_CH2(objects::TCS_SENSOR_CH2, &TempValueVec[1], &TempValueVec, 1, TEMPERATURE_SENSOR_CONFIG, datapool::TempValidity_SENSOR_CH2, &SensorData, NULL), HEATER_1(objects::TCS_HEATER_1, objects::TCS_SWITCH_1), REDUNDANT_HEATER_1(objects::TCS_REDUNDANT_HEATER_1, objects::TCS_SWITCH_1R), HEATER_2(objects::TCS_HEATER_2, objects::TCS_SWITCH_2), REDUNDANT_HEATER_2(objects::TCS_REDUNDANT_HEATER_2, objects::TCS_SWITCH_2R), TEMPERATURE_COMPONENT_1(objects::TCS_COMPONENT_1, COMPONENT_DOMAIN_ID, datapool::Temperature_COMPONENT_1, datapool::TargetState_COMPONENT_1, datapool::CurrentState_COMPONENT_1, datapool::HeaterRequest_COMPONENT_1, &ComponentData, &TEMPERATURE_SENSOR_CH1, NULL, NULL, &HEATER_1, &REDUNDANT_HEATER_1, NULL, COMPONENT1_CONFIG, ThermalComponentIF::SAFE), TEMPERATURE_COMPONENT_2(objects::TCS_COMPONENT_2, COMPONENT_DOMAIN_ID + 1, datapool::Temperature_COMPONENT_2, datapool::TargetState_COMPONENT_2, datapool::CurrentState_COMPONENT_2, datapool::HeaterRequest_COMPONENT_2, &ComponentData, &TEMPERATURE_SENSOR_CH2, NULL, NULL, &HEATER_2, &REDUNDANT_HEATER_2, NULL, COMPONENT2_CONFIG, ThermalComponentIF::SAFE) { sensors.push_back(TEMPERATURE_SENSOR_CH1); sensors.push_back(TEMPERATURE_SENSOR_CH2); heaters.push_back(HEATER_1); heaters.push_back(HEATER_2); redundant_heaters.push_back(REDUNDANT_HEATER_1); redundant_heaters.push_back(REDUNDANT_HEATER_2); components.push_back(TEMPERATURE_COMPONENT_1); components.push_back(TEMPERATURE_COMPONENT_2); } ThermalController::~ThermalController() { } ReturnValue_t ThermalController::initialize() { ReturnValue_t result = ControllerBase::initialize(); if (result != HasReturnvaluesIF::RETURN_OK) { return result; } /*result = actionHelper.initialize(); if (result != HasReturnvaluesIF::RETURN_OK) { return result; } result = parameterHelper.initialize(); if (result != HasReturnvaluesIF::RETURN_OK) { return result; }*/ /* *****POWER SWITCHER***** */ /*PowerSwitchIF *powerSwitcher = objectManager->get( powerSwitcherId); if (powerSwitcher == NULL) { return HasReturnvaluesIF::RETURN_FAILED; }*/ /* ************************ */ mode = MODE_NORMAL; submode = HEATER_REDUNDANCY; sif::debug<<"\nDEBUG_TCS: Start initialization"<::iterator iter = sensors.begin(); iter != sensors.end(); iter++) { iter->performHealthOp(); } sif::debug<<"DEBUG_TCS: Health ops"<::iterator iter = sensors.begin(); iter != sensors.end(); iter++) { iter->performOperation(0); } SensorData.commit(); sif::debug<<"DEBUG_TCS: Sensor ops"<::iterator iter = components.begin(); iter != components.end(); iter++) { request = iter->performOperation(0, true, false); // request returnvalue to check, overridden //request = iter->performOperation(0, ThermalComponentIF::SAFE, true, false); } ComponentData.commit(); sif::debug<<"DEBUG_TCS: Component ops"<::deSerialize(&objectId, &pointer, &readSize, true); ThermalComponentIF *component = findComponentByObjectId(objectId); if (component != NULL) { if (component->setTargetState(*pointer) == RETURN_OK) { return EXECUTION_FINISHED; } else { return NOT_ALLOWED; } } } return INVALID_PARAMETERS; case SET_PREHEATING_MODULE: if (size != 2) { return INVALID_PARAMETERS; } switch (*data) { case 0: coreModule.setHeating(data[1] != 0); break; case 1: serviceModule.setHeating(data[1] != 0); break; case 2: payloadModule.setHeating(data[1] != 0); break; default: return INVALID_PARAMETERS; } return EXECUTION_FINISHED; default: return INVALID_ACTION_ID; } }*/ /*ThermalComponentIF* ThermalController::findComponentByObjectId(object_id_t id) { //This method was generated with a regular expression from the ctor code. //More space, but faster than iterating a linked list to find the right id. switch (id) { case objects::TCS_COMPONENT_1: return &TEMPERATURE_COMPONENT_1; case objects::TCS_COMPONENT_2: return &TEMPERATURE_COMPONENT_2; default: return NULL; } }*/ /*void ThermalController::announceMode(bool recursive) { triggerEvent(TCS_CONTROL_STRATEGY, strategy, 0); ControllerBase::announceMode(recursive); }*/