OpticalModulator.cc revision 10447
110447Snilay@cs.wisc.edu
210447Snilay@cs.wisc.edu#include "model/optical_graph/OpticalModulator.h"
310447Snilay@cs.wisc.edu#include "model/optical_graph/OpticalTransmitter.h"
410447Snilay@cs.wisc.edu
510447Snilay@cs.wisc.edunamespace DSENT
610447Snilay@cs.wisc.edu{
710447Snilay@cs.wisc.edu    OpticalModulator::OpticalModulator(const String& instance_name_, OpticalModel* model_, const WavelengthGroup& wavelengths_, bool opt_loss_, OpticalTransmitter* transmitter_)
810447Snilay@cs.wisc.edu        : OpticalNode(OpticalNode::MODULATOR, instance_name_, model_, wavelengths_), m_transmitter_(transmitter_), m_insertion_loss_(0), m_extinction_ratio_(0), m_opt_loss_(opt_loss_)
910447Snilay@cs.wisc.edu    {
1010447Snilay@cs.wisc.edu
1110447Snilay@cs.wisc.edu    }
1210447Snilay@cs.wisc.edu
1310447Snilay@cs.wisc.edu    OpticalModulator::~OpticalModulator()
1410447Snilay@cs.wisc.edu    {
1510447Snilay@cs.wisc.edu
1610447Snilay@cs.wisc.edu    }
1710447Snilay@cs.wisc.edu
1810447Snilay@cs.wisc.edu    bool OpticalModulator::canOptimizeLoss() const
1910447Snilay@cs.wisc.edu    {
2010447Snilay@cs.wisc.edu        return m_opt_loss_;
2110447Snilay@cs.wisc.edu    }
2210447Snilay@cs.wisc.edu
2310447Snilay@cs.wisc.edu    void OpticalModulator::setLosses(double IL_dB_, double ER_dB_)
2410447Snilay@cs.wisc.edu    {
2510447Snilay@cs.wisc.edu        m_insertion_loss_ = IL_dB_;
2610447Snilay@cs.wisc.edu        m_extinction_ratio_ = ER_dB_;
2710447Snilay@cs.wisc.edu
2810447Snilay@cs.wisc.edu        return;
2910447Snilay@cs.wisc.edu    }
3010447Snilay@cs.wisc.edu
3110447Snilay@cs.wisc.edu    bool OpticalModulator::setModulatorSpec(double IL_dB_, double ER_dB_)
3210447Snilay@cs.wisc.edu    {
3310447Snilay@cs.wisc.edu        // Ask the transmitter to design to those specs, returns success or fail
3410447Snilay@cs.wisc.edu        return m_transmitter_->setTransmitterSpec(IL_dB_, ER_dB_);
3510447Snilay@cs.wisc.edu    }
3610447Snilay@cs.wisc.edu
3710447Snilay@cs.wisc.edu    double OpticalModulator::getPower(double util_) const
3810447Snilay@cs.wisc.edu    {
3910447Snilay@cs.wisc.edu        return m_transmitter_->getPower(util_);
4010447Snilay@cs.wisc.edu    }
4110447Snilay@cs.wisc.edu
4210447Snilay@cs.wisc.edu    double OpticalModulator::getInsertionLoss() const
4310447Snilay@cs.wisc.edu    {
4410447Snilay@cs.wisc.edu        return m_insertion_loss_;
4510447Snilay@cs.wisc.edu    }
4610447Snilay@cs.wisc.edu
4710447Snilay@cs.wisc.edu    double OpticalModulator::getExtinctionRatio() const
4810447Snilay@cs.wisc.edu    {
4910447Snilay@cs.wisc.edu        return m_extinction_ratio_;
5010447Snilay@cs.wisc.edu    }
5110447Snilay@cs.wisc.edu
5210447Snilay@cs.wisc.edu} // namespace DSENT
5310447Snilay@cs.wisc.edu
5410447Snilay@cs.wisc.edu
55