diff options
Diffstat (limited to 'src/devices/bus/interpro/keyboard/keyboard.h')
-rw-r--r-- | src/devices/bus/interpro/keyboard/keyboard.h | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/devices/bus/interpro/keyboard/keyboard.h b/src/devices/bus/interpro/keyboard/keyboard.h index 9d40e5a9e96..83347f17114 100644 --- a/src/devices/bus/interpro/keyboard/keyboard.h +++ b/src/devices/bus/interpro/keyboard/keyboard.h @@ -5,13 +5,6 @@ #pragma once -#define MCFG_INTERPRO_KEYBOARD_PORT_ADD(tag, slot_intf, def_slot) \ - MCFG_DEVICE_ADD(tag, INTERPRO_KEYBOARD_PORT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) - -#define MCFG_INTERPRO_KEYBOARD_RXD_HANDLER(cb) \ - downcast<interpro_keyboard_port_device &>(*device).set_rxd_handler(DEVCB_##cb); - class device_interpro_keyboard_port_interface; class interpro_keyboard_port_device : public device_t, public device_slot_interface @@ -19,25 +12,31 @@ class interpro_keyboard_port_device : public device_t, public device_slot_interf friend class device_interpro_keyboard_port_interface; public: - interpro_keyboard_port_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); - virtual ~interpro_keyboard_port_device(); - - // static configuration helpers - template <class Object> devcb_base &set_rxd_handler(Object &&cb) { return m_rxd_handler.set_callback(std::forward<Object>(cb)); } - + template <typename T> + interpro_keyboard_port_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&slot_options, const char *default_option) + : interpro_keyboard_port_device(mconfig, tag, owner) + { + option_reset(); + slot_options(*this); + set_default_option(default_option); + set_fixed(false); + } + + interpro_keyboard_port_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0); + + // callback configuration + auto rxd_handler_cb() { return m_rxd_handler.bind(); } + + // input lines DECLARE_WRITE_LINE_MEMBER(write_txd); protected: - interpro_keyboard_port_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock); - virtual void device_start() override; virtual void device_config_complete() override; - int m_rxd; - +private: devcb_write_line m_rxd_handler; -private: device_interpro_keyboard_port_interface *m_dev; }; @@ -46,15 +45,14 @@ class device_interpro_keyboard_port_interface : public device_slot_card_interfac friend class interpro_keyboard_port_device; public: - virtual ~device_interpro_keyboard_port_interface() override; - + // input lines virtual DECLARE_WRITE_LINE_MEMBER(input_txd) { } - - DECLARE_WRITE_LINE_MEMBER(output_rxd) { m_port->m_rxd = state; m_port->m_rxd_handler(state); } + DECLARE_WRITE_LINE_MEMBER(output_rxd) { m_port->m_rxd_handler(state); } protected: device_interpro_keyboard_port_interface(machine_config const &mconfig, device_t &device); +private: interpro_keyboard_port_device *m_port; }; |