diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_log.c')
-rw-r--r-- | src/lib/netlist/devices/nld_log.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/lib/netlist/devices/nld_log.c b/src/lib/netlist/devices/nld_log.c new file mode 100644 index 00000000000..db96664661b --- /dev/null +++ b/src/lib/netlist/devices/nld_log.c @@ -0,0 +1,76 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_log.c + * + */ + +#include "nld_log.h" +//#include "sound/wavwrite.h" + +NETLIB_NAMESPACE_DEVICES_START() + +//FIXME: what to do with save states? + +NETLIB_START(log) +{ + register_input("I", m_I); + + pstring filename = pfmt("{1}.log")(name()); + m_strm = palloc(pofilestream(filename)); +} + +NETLIB_RESET(log) +{ +} + +NETLIB_UPDATE(log) +{ + /* use pstring::sprintf, it is a LOT faster */ + m_strm->writeline(pfmt("{1} {2}").e(netlist().time().as_double(),".9").e((nl_double) INPANALOG(m_I))); +} + +NETLIB_NAME(log)::~NETLIB_NAME(log)() +{ + m_strm->close(); + pfree(m_strm); +} + +NETLIB_START(logD) +{ + NETLIB_NAME(log)::start(); + register_input("I2", m_I2); +} + +NETLIB_RESET(logD) +{ +} + +NETLIB_UPDATE(logD) +{ + m_strm->writeline(pfmt("{1} {2}").e(netlist().time().as_double(),".9").e((nl_double) (INPANALOG(m_I) - INPANALOG(m_I2)))); +} + +// FIXME: Implement wav later, this must be clock triggered device where the input to be written +// is on a subdevice .. +#if 0 +NETLIB_START(wav) +{ + register_input("I", m_I); + + pstring filename = "netlist_" + name() + ".wav"; + m_file = wav_open(filename, sample_rate(), active_inputs()/2) +} + +NETLIB_UPDATE(wav) +{ + fprintf(m_file, "%e %e\n", netlist().time().as_double(), INPANALOG(m_I)); +} + +NETLIB_NAME(log)::~NETLIB_NAME(wav)() +{ + fclose(m_file); +} +#endif + +NETLIB_NAMESPACE_DEVICES_END() |