summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/lc7535.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/lc7535.h')
-rw-r--r--src/devices/sound/lc7535.h20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/devices/sound/lc7535.h b/src/devices/sound/lc7535.h
index f2137fd82c7..2b357f920f4 100644
--- a/src/devices/sound/lc7535.h
+++ b/src/devices/sound/lc7535.h
@@ -42,27 +42,19 @@ public:
typedef device_delegate<void (int attenuation_right, int attenuation_left, bool loudness)> volume_delegate;
auto select() { return m_select_cb.bind(); }
- void set_volume_callback(volume_delegate callback) { m_volume_cb = callback; }
- template <class FunctionClass> void set_volume_callback(const char *devname, void (FunctionClass::*callback)(int, int, bool), const char *name)
- {
- set_volume_callback(volume_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
- }
- template <class FunctionClass> void set_volume_callback(void (FunctionClass::*callback)(int, int, bool), const char *name)
- {
- set_volume_callback(volume_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
- }
+ template <typename... T> void set_volume_callback(T &&... args) { m_volume_cb.set(std::forward<T>(args)...); }
// serial interface
- DECLARE_WRITE_LINE_MEMBER( ce_w );
- DECLARE_WRITE_LINE_MEMBER( di_w );
- DECLARE_WRITE_LINE_MEMBER( clk_w );
+ void ce_w(int state);
+ void di_w(int state);
+ void clk_w(int state);
float normalize(int attenuation);
protected:
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
private:
// maximum attenuation is -98 dB for infinity