summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/mm5740.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/mm5740.h')
-rw-r--r--src/devices/machine/mm5740.h38
1 files changed, 33 insertions, 5 deletions
diff --git a/src/devices/machine/mm5740.h b/src/devices/machine/mm5740.h
index 1896f568e4c..e28fbdc0956 100644
--- a/src/devices/machine/mm5740.h
+++ b/src/devices/machine/mm5740.h
@@ -80,6 +80,23 @@ Vgg 18 -12V
//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_MM5740_MATRIX_X1(_cb) downcast<mm5740_device &>(*device).set_x_cb<0>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X2(_cb) downcast<mm5740_device &>(*device).set_x_cb<1>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X3(_cb) downcast<mm5740_device &>(*device).set_x_cb<2>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X4(_cb) downcast<mm5740_device &>(*device).set_x_cb<3>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X5(_cb) downcast<mm5740_device &>(*device).set_x_cb<4>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X6(_cb) downcast<mm5740_device &>(*device).set_x_cb<5>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X7(_cb) downcast<mm5740_device &>(*device).set_x_cb<6>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X8(_cb) downcast<mm5740_device &>(*device).set_x_cb<7>(DEVCB_##_cb);
+#define MCFG_MM5740_MATRIX_X9(_cb) downcast<mm5740_device &>(*device).set_x_cb<8>(DEVCB_##_cb);
+#define MCFG_MM5740_SHIFT_CB(_cb) downcast<mm5740_device &>(*device).set_shift_cb(DEVCB_##_cb);
+#define MCFG_MM5740_CONTROL_CB(_cb) downcast<mm5740_device &>(*device).set_control_cb(DEVCB_##_cb);
+#define MCFG_MM5740_DATA_READY_CB(_cb) downcast<mm5740_device &>(*device).set_data_ready_cb(DEVCB_##_cb);
+
+//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -94,11 +111,22 @@ public:
// public interface
uint16_t b_r();
- template <unsigned N> auto x_cb() { return m_read_x[N].bind(); }
- auto shift_cb() { return m_read_shift.bind(); }
- auto control_cb() { return m_read_control.bind(); }
- auto data_ready_cb() { return m_write_data_ready.bind(); }
-
+ template <unsigned N, typename Object> devcb_base &set_x_cb(Object &&cb)
+ {
+ return m_read_x[N].set_callback(std::forward<Object>(cb));
+ }
+ template <typename Object> devcb_base &set_shift_cb(Object &&cb)
+ {
+ return m_read_shift.set_callback(std::forward<Object>(cb));
+ }
+ template <typename Object> devcb_base &set_control_cb(Object &&cb)
+ {
+ return m_read_control.set_callback(std::forward<Object>(cb));
+ }
+ template <typename Object> devcb_base &set_data_ready_cb(Object &&cb)
+ {
+ return m_write_data_ready.set_callback(std::forward<Object>(cb));
+ }
static uint32_t calc_effective_clock_key_debounce(uint32_t capacitance);
protected: