diff options
| author | Clément Zrounba <clement.zrounba@ec-lyon.fr> | 2023-12-21 13:08:07 +0000 |
|---|---|---|
| committer | Clément Zrounba <clement.zrounba@ec-lyon.fr> | 2023-12-21 13:08:07 +0000 |
| commit | 0bb001dec03b295713ef9867e1de933136382d2c (patch) | |
| tree | 59f5df2a50b025d5c50045a82eea060cf6fee9c2 /src/devices/power_meter.h | |
| parent | 0e4b33a965e8eabb687ba07580be749e5f0ffe4c (diff) | |
| download | specs-dev.tar.gz specs-dev.zip | |
Add source files missing from previous commitdev
Diffstat (limited to 'src/devices/power_meter.h')
| -rw-r--r-- | src/devices/power_meter.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/devices/power_meter.h b/src/devices/power_meter.h new file mode 100644 index 0000000..73339f3 --- /dev/null +++ b/src/devices/power_meter.h @@ -0,0 +1,36 @@ +#pragma once + +#include <systemc.h> +#include <fstream> +#include <random> + +#include <optical_output_port.h> +#include <optical_signal.h> +#include "specs.h" +#include "spx_module.h" + +/* Power meter (DC component only) */ +class PowerMeter : public spx_module { +public: + // Ports + spx::oa_port_in_type p_in; + double m_cur_power; + + // Input memory for multi-wavelength purposes + std::map<uint32_t,OpticalSignal::field_type> m_memory_in; + + // Processes + void on_port_in_changed(); + + virtual void trace(sc_trace_file *Tf) const; + + // Constructor + PowerMeter(sc_module_name name) + : spx_module(name) + { + SC_HAS_PROCESS(PowerMeter); + + SC_THREAD(on_port_in_changed); + sensitive << p_in; + } +}; |
