tResult Emergency::Init(tInitStage eStage, __exception)
{
    RETURN_IF_FAILED(cFilter::Init(eStage, __exception_ptr));

    if (eStage == StageFirst)
    {
        cObjectPtr<IMediaType> typeSignal;
        cObjectPtr<IMediaType> typeSignalOut;

        RETURN_IF_FAILED(initInputPins(__exception_ptr, typeSignal));
        RETURN_IF_FAILED(initOutputPins(typeSignalOut));

        RETURN_IF_FAILED(typeSignal->GetInterface(IID_ADTF_MEDIA_TYPE_DESCRIPTION, (tVoid**) &this->coderDescriptionSignalInput));

        RETURN_IF_FAILED_AND_LOG_ERROR_STR(createInputPin("front_ir_fusion", this->m_oIFrontIRF, typeSignal), "Failed creating IR Fusion!");
        RETURN_IF_FAILED_AND_LOG_ERROR_STR(createOutputPin("decision", this->decisionPin, typeSignalOut), "Failed creating decision output!");
    }

    else if (eStage == StageNormal)
    {
        this->m_nEmergencyDistanceFront = GetPropertyInt(PROPERTY_EMERGENCY_DISTANCE_FRONT);
        this->m_nEmergencyDistanceRear = GetPropertyInt(PROPERTY_EMERGENCY_DISTANCE_REAR);
        this->m_nEmergencyDistanceFrontUss = GetPropertyInt(PROPERTY_EMERGENCY_DISTANCE_FRONT_USS);
    }
    else if (eStage == StageGraphReady)
    {
        cObjectPtr<IMediaSerializer> serializer;
        RETURN_IF_FAILED(this->coderDescriptionSignalOutput->GetMediaSampleSerializer(&serializer));
        m_size = serializer->GetDeserializedSize();
    }

    RETURN_NOERROR;
}
Esempio n. 2
0
Controller::Controller()
{
	initPwm();
	initInputPins();
}