summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2014-04-11 16:26:51 +0000
committer Ivan Vangelista <mesgnet@yahoo.it>2014-04-11 16:26:51 +0000
commitd707a9d54c560cc24b5d26cd14986b914ff24c27 (patch)
treecf6acf4838b7a7962a82ed592c8bd1f05030093b
parentfcc4b33f2e5528087cb4976a0d70ae92ec2853e9 (diff)
midiin_device: converted to devcb2 (nw)
-rw-r--r--src/emu/bus/midi/midiinport.c8
-rw-r--r--src/emu/imagedev/midiin.c16
-rw-r--r--src/emu/imagedev/midiin.h22
3 files changed, 12 insertions, 34 deletions
diff --git a/src/emu/bus/midi/midiinport.c b/src/emu/bus/midi/midiinport.c
index 906a183e7b4..525736f1969 100644
--- a/src/emu/bus/midi/midiinport.c
+++ b/src/emu/bus/midi/midiinport.c
@@ -17,13 +17,9 @@ midiin_port_device::midiin_port_device(const machine_config &mconfig, const char
{
}
-static midiin_config midiin_port_image_config =
-{
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, midiin_port_device, read)
-};
-
static MACHINE_CONFIG_FRAGMENT(midiin_port_config)
- MCFG_MIDIIN_ADD("midiinimg", midiin_port_image_config)
+ MCFG_DEVICE_ADD("midiinimg", MIDIIN, 0)
+ MCFG_MIDIIN_INPUT_CB(WRITELINE(midiin_port_device, read))
MACHINE_CONFIG_END
machine_config_constructor midiin_port_device::device_mconfig_additions() const
diff --git a/src/emu/imagedev/midiin.c b/src/emu/imagedev/midiin.c
index bbd959bd617..8f0f14dd2e1 100644
--- a/src/emu/imagedev/midiin.c
+++ b/src/emu/imagedev/midiin.c
@@ -22,7 +22,8 @@ const device_type MIDIIN = &device_creator<midiin_device>;
midiin_device::midiin_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MIDIIN, "MIDI In image device", tag, owner, clock, "midiin", __FILE__),
device_image_interface(mconfig, *this),
- device_serial_interface(mconfig, *this)
+ device_serial_interface(mconfig, *this),
+ m_input_cb(*this)
{
}
@@ -32,7 +33,7 @@ midiin_device::midiin_device(const machine_config &mconfig, const char *tag, dev
void midiin_device::device_start()
{
- m_input_func.resolve(m_input_callback, *this);
+ m_input_cb.resolve_safe();
m_timer = timer_alloc(0);
m_midi = NULL;
m_timer->enable(false);
@@ -55,15 +56,6 @@ void midiin_device::device_reset()
void midiin_device::device_config_complete(void)
{
- const midiin_config *intf = reinterpret_cast<const midiin_config *>(static_config());
- if(intf != NULL)
- {
- *static_cast<midiin_config *>(this) = *intf;
- }
- else
- {
- memset(&m_input_callback, 0, sizeof(m_input_callback));
- }
update_names();
}
@@ -152,7 +144,7 @@ void midiin_device::tra_complete()
void midiin_device::tra_callback()
{
int bit = transmit_register_get_data_bit();
- m_input_func(bit);
+ m_input_cb(bit);
}
void midiin_device::xmit_char(UINT8 data)
diff --git a/src/emu/imagedev/midiin.h b/src/emu/imagedev/midiin.h
index 6deae720968..efa47f2d1ff 100644
--- a/src/emu/imagedev/midiin.h
+++ b/src/emu/imagedev/midiin.h
@@ -10,19 +10,8 @@
#define __MIDIIN_H__
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-struct midiin_config
-{
- /* callback to driver */
- devcb_write_line m_input_callback;
-};
-
-#define MCFG_MIDIIN_ADD(_tag, _config) \
- MCFG_DEVICE_ADD(_tag, MIDIIN, 0) \
- MCFG_DEVICE_CONFIG(_config)
+#define MCFG_MIDIIN_INPUT_CB(_devcb) \
+ devcb = &midiin_device::set_input_callback(*device, DEVCB2_##_devcb);
/***************************************************************************
@@ -31,13 +20,14 @@ struct midiin_config
class midiin_device : public device_t,
public device_image_interface,
- public device_serial_interface,
- public midiin_config
+ public device_serial_interface
{
public:
// construction/destruction
midiin_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ template<class _Object> static devcb2_base &set_input_callback(device_t &device, _Object object) { return downcast<midiin_device &>(device).m_input_cb.set_callback(object); }
+
// image-level overrides
virtual bool call_load();
virtual void call_unload();
@@ -72,7 +62,7 @@ private:
osd_midi_device *m_midi;
emu_timer *m_timer;
- devcb_resolved_write_line m_input_func;
+ devcb2_write_line m_input_cb;
UINT8 m_xmitring[XMIT_RING_SIZE];
int m_xmit_read, m_xmit_write;
bool m_tx_busy;