summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_log.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nld_log.c')
-rw-r--r--src/lib/netlist/devices/nld_log.c76
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()