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