|
|
1.1 root 1: //
2: // nono
1.1.1.3 root 3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
1.1 root 5: //
6:
1.1.1.8 ! root 7: //
! 8: // Ethernet 基本クラス
! 9: //
1.1 root 10:
11: // IODevice
12: // |
13: // v
14: // EthernetDevice (イーサネットとしての共通部分)
15: // |
16: // +--------+-------+
17: // v v
18: // LanceDevice RTL8019Device
19: // (LUNA, AM7990) (X68000, RTL8019)
20:
1.1.1.8 ! root 21: #pragma once
1.1.1.3 root 22:
1.1.1.8 ! root 23: #include "device.h"
! 24: #include "macaddr.h"
1.1 root 25:
1.1.1.8 ! root 26: class HostNetDevice;
1.1.1.7 root 27:
1.1 root 28: class EthernetDevice : public IODevice
29: {
1.1.1.3 root 30: using inherited = IODevice;
1.1 root 31: protected:
1.1.1.7 root 32: EthernetDevice(const std::string& objname_);
1.1 root 33: public:
1.1.1.5 root 34: virtual ~EthernetDevice() override;
1.1 root 35:
1.1.1.3 root 36: bool Create() override;
1.1.1.5 root 37:
1.1.1.3 root 38: // MAC アドレスを取得
39: macaddr_t GetMacAddr() const {
40: return macaddr;
41: }
42:
1.1.1.8 ! root 43: // ホストデバイスを取得する。Create() 完了後から使用可能。
! 44: // (ステータスパネルが呼び出す)
! 45: HostNetDevice *GetHostNet() const { return hostnet.get(); }
1.1.1.7 root 46:
47: protected:
1.1.1.8 ! root 48: // ホストスレッドからの受信通知
! 49: void HostRxCallback();
1.1.1.7 root 50:
1.1.1.3 root 51: // MAC アドレス
1.1.1.4 root 52: macaddr_t macaddr {};
1.1.1.7 root 53:
1.1.1.8 ! root 54: std::unique_ptr<HostNetDevice> hostnet /*{}*/;
1.1 root 55: };
56:
1.1.1.8 ! root 57: extern EthernetDevice *gEthernet;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.