summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/dinetwork.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/dinetwork.h')
-rw-r--r--src/emu/dinetwork.h15
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;
};