diff options
Diffstat (limited to 'src/emu/dinetwork.h')
-rw-r--r-- | src/emu/dinetwork.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/emu/dinetwork.h b/src/emu/dinetwork.h index 8cf6ec9c5a7..fa5ee730a87 100644 --- a/src/emu/dinetwork.h +++ b/src/emu/dinetwork.h @@ -11,6 +11,8 @@ public: device_network_interface(const machine_config &mconfig, device_t &device, float bandwidth); virtual ~device_network_interface(); + void interface_pre_start() override; + void set_interface(int id); void set_promisc(bool promisc); void set_mac(const char *mac); @@ -20,14 +22,27 @@ public: int get_interface() const { return m_intf; } int send(u8 *buf, int len) const; + + // TODO: de-virtualise this when existing devices implement delayed receive virtual void recv_cb(u8 *buf, int len); + // delayed transmit/receive handlers + virtual void send_complete_cb(int result) {} + virtual int recv_start_cb(u8 *buf, int len) { return 0; } + virtual void recv_complete_cb(int result) {} + protected: + TIMER_CALLBACK_MEMBER(send_complete); + TIMER_CALLBACK_MEMBER(recv_complete); + bool m_promisc; char m_mac[6]; float m_bandwidth; std::unique_ptr<osd_netdev> m_dev; int m_intf; + + emu_timer *m_send_timer; + emu_timer *m_recv_timer; }; |