Difference between revisions of "Unit Network"
(43 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '' | + | '''Ultibo Network Interface unit''' |
=== Constants === | === Constants === | ||
---- | ---- | ||
− | '' | + | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network specific constants''' <code> NETWORK_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_NAME_PREFIX = 'Network';</code> | ||
+ | | Name prefix for Network Devices | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|Generic Network | ||
+ | |- | ||
+ | | <code>HARDWARE_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>HARDWARE_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HARDWARE_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network device type''' <code> NETWORK_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_TYPE_NONE = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_TYPE_ETHERNET = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_TYPE_TOKENRING = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_TYPE_80211 = 3;</code> | ||
+ | | IEEE 802.11 Wireless (WiFi) network | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>NETWORK_TYPE_MAX = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network device state''' <code> NETWORK_STATE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_STATE_CLOSED = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_STATE_CLOSING = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_STATE_OPENING = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_STATE_OPEN = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>NETWORK_STATE_MAX = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network device status''' <code> NETWORK_STATUS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_STATUS_DOWN = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_STATUS_UP = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>NETWORK_STATUS_MAX = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network device flag''' <code> NETWORK_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_FLAG_NONE = $00000000;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_FLAG_RX_BUFFER = $00000001;</code> | ||
+ | | Device supports Receive Buffer (NetworkBufferReceive/NetworkBufferRelease) | ||
+ | |- | ||
+ | | <code>NETWORK_FLAG_TX_BUFFER = $00000002;</code> | ||
+ | | Device supports Transmit Buffer (NetworkBufferAllocate/NetworkBufferTransmit) | ||
+ | |- | ||
+ | | <code>NETWORK_FLAG_RX_MULTIPACKET = $00000004;</code> | ||
+ | | Device supports multiple packets in the same Receive entry | ||
+ | |- | ||
+ | | <code>NETWORK_FLAG_TX_MULTIPACKET = $00000008;</code> | ||
+ | | Device supports multiple packets in the same Transmit entry | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network device control code''' <code> NETWORK_CONTROL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_CLEAR_STATS = 1;</code> | ||
+ | | Clear Statistics | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_SET_MAC = 2;</code> | ||
+ | | Set the MAC for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_MAC = 3;</code> | ||
+ | | Get the MAC for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_SET_LOOPBACK = 4;</code> | ||
+ | | Set Loopback Mode | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_RESET = 5;</code> | ||
+ | | Reset the device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_DISABLE = 6;</code> | ||
+ | | Disable the device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_BROADCAST = 8;</code> | ||
+ | | Get Broadcast address for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_MTU = 9;</code> | ||
+ | | Get MTU for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_HEADERLEN = 10;</code> | ||
+ | | Get Header length for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_LINK = 11;</code> | ||
+ | | Get link status for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_SPEED = 12;</code> | ||
+ | | Get link speed for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_DUPLEX = 13;</code> | ||
+ | | Get link speed for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_RESET_LINK = 14;</code> | ||
+ | | Reset link for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_STATS = 15;</code> | ||
+ | | Get statistics for this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_ADD_MULTICAST = 16;</code> | ||
+ | | Add a multicast address to this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_DEL_MULTICAST = 17;</code> | ||
+ | | Delete a multicast address from this device | ||
+ | |- | ||
+ | | <code>NETWORK_CONTROL_GET_MULTICAST = 18;</code> | ||
+ | | Get the list of multicast address for this device | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network link state''' <code> NETWORK_LINK_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_LINK_DOWN = NETWORK_STATUS_DOWN;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_LINK_UP = NETWORK_STATUS_UP;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network speed state''' <code> NETWORK_SPEED_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_SPEED_NONE = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_SPEED_10 = 10;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_SPEED_100 = 100;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_SPEED_1000 = 1000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network duplex state''' <code> NETWORK_DUPLEX_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_DUPLEX_NONE = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_DUPLEX_HALF = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_DUPLEX_FULL = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network lock state''' <code> NETWORK_LOCK_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_LOCK_NONE = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_LOCK_READ = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_LOCK_WRITE = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network buffer size''' <code> NETWORK_BUFFER_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_BUFFER_SIZE = 1024;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network event''' <code> NETWORK_EVENT_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_NONE = $00000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_SYSTEM_START = $00000001;</code> | ||
+ | | The network sub system is starting | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_SYSTEM_STOP = $00000002;</code> | ||
+ | | The network sub system has stopped | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_ADAPTERS_START = $00000004;</code> | ||
+ | | All network adapters are being started | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_ADAPTERS_STOP = $00000008;</code> | ||
+ | | All network adapters have been stopped | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_TRANSPORTS_START = $00000010;</code> | ||
+ | | All network transports are being started | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_TRANSPORTS_STOP = $00000020;</code> | ||
+ | | All network transports have been stopped | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_PROTOCOLS_START = $00000040;</code> | ||
+ | | All network protocols are being started | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_PROTOCOLS_STOP = $00000080;</code> | ||
+ | | All network protocols have been stopped | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network event signature''' <code> NETWORK_EVENT_SIGNATURE* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_SIGNATURE = $BE1D50C2;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network event state''' <code> NETWORK_EVENT_STATE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_STATE_UNREGISTERED = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_STATE_REGISTERED = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network event flag''' <code> NETWORK_EVENT_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_EVENT_FLAG_NONE = $00000000;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Adapter type''' <code> ADAPTER_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ADAPTER_TYPE_UNKNOWN = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ADAPTER_TYPE_WIRED = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADAPTER_TYPE_LOOPBACK = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADAPTER_TYPE_WIRELESS = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADAPTER_TYPE_SLIP = 4;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADAPTER_TYPE_PPP = 5;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Adapter thread''' <code> ADAPTER_THREAD_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ADAPTER_THREAD_NAME = 'Network Adapter';</code> | ||
+ | | Thread name for Network adapter threads | ||
+ | |- | ||
+ | | <code>ADAPTER_THREAD_PRIORITY = THREAD_PRIORITY_HIGHER;</code> | ||
+ | | Thread priority for Network adapter threads | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Adapter state''' <code> ADAPTER_STATE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ADAPTER_STATE_DISABLED = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ADAPTER_STATE_ENABLED = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Adapter status''' <code> ADAPTER_STATUS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ADAPTER_STATUS_DOWN = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ADAPTER_STATUS_UP = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Configuration type''' <code> CONFIG_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_AUTO = 0; </code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_STATIC = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_RARP = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_BOOTP = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_DHCP = 4;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_PSEUDO = 5;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_LOOPBACK = 6;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_SLIP = 7;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_PPP = 8;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>CONFIG_TYPE_UNKNOWN = Word(-1);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Authentication type''' <code> AUTH_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>AUTH_TYPE_UNKNOWN = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>AUTH_TYPE_EAP = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AUTH_TYPE_RSN = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Frame type''' <code> FRAME_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_UNKNOWN = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_ETHERNET_II = 1;</code> | ||
+ | | Blue Book | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_TOKEN_RING = 3;</code> | ||
+ | | IEEE 802.5 | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_APPLETALK = 5;</code> | ||
+ | | LocalTalk | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_ETHERNET_8022 = 11;</code> | ||
+ | | IEEE 802.2 LLC | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_ETHERNET_SNAP = 98;</code> | ||
+ | | IEEE 802.2 LLC with SNAP Header | ||
+ | |- | ||
+ | | <code>FRAME_TYPE_ETHERNET_8023 = 99;</code> | ||
+ | | 802.3 RAW (Novell) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FRAME_START_ETHERNET_SNAP = $AAAA;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRAME_START_ETHERNET_8023 = $FFFF;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ADAPTER_MODE_NONE = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADAPTER_MODE_LOCAL = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADAPTER_MODE_BROADCAST= 3;</code> | ||
+ | | This is the default | ||
+ | |- | ||
+ | | <code>ADAPTER_MODE_LOCAL_MULTI = 4;</code> | ||
+ | | Mode 3 plus directed Multicast | ||
+ | |- | ||
+ | | <code>ADAPTER_MODE_BROADCAST_MULTI = 5;</code> | ||
+ | | Mode 3 plus all Multicast | ||
+ | |- | ||
+ | | <code>ADAPTER_MODE_PROMISCUOUS = 6;</code> | ||
+ | | Promiscuous mode | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Configuration command''' <code> CONFIG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_DISCOVER = 0;</code> | ||
+ | | Discover an Address from the ConfigHandler | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_REQUEST = 1;</code> | ||
+ | | Request an Address from the ConfigHandler (Either configured or obtained from Discover) | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_RELEASE = 2;</code> | ||
+ | | Release the Address obtained from ConfigHandler | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_RENEW = 3;</code> | ||
+ | | Renew the Address obtained from ConfigHandler | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_REBIND = 4;</code> | ||
+ | | Rebind the Address obtained from ConfigHandler | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_INFORM = 5;</code> | ||
+ | | Obtain information only from the ConfigHandler | ||
+ | |- | ||
+ | | <code>CONFIG_ADAPTER_REBOOT = 6;</code> | ||
+ | | Request previous Address after a Reboot | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>CONFIG_RETRY_TIMEOUT = 300000;</code> | ||
+ | | 5 min Config Retry Timeout | ||
+ | |- | ||
+ | | <code>CONFIG_RENEW_TIMEOUT = 60000;</code> | ||
+ | | 1 min Config Renew Timeout | ||
+ | |- | ||
+ | | <code>CONFIG_REBIND_TIMEOUT = 60000;</code> | ||
+ | | 1 min Config Rebind Timeout | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Authentication command''' <code> AUTH_COMMAND_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>AUTH_COMMAND_ASSOCIATE = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>AUTH_COMMAND_DISASSOCIATE = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AUTH_COMMAND_AUTHENTICATE = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AUTH_COMMAND_UNAUTHENTICATE = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Multicast addressing''' <code> MAX_MULTICAST_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MAX_MULTICAST_ADDRESS = 8;</code> | ||
+ | | Maximum number of addresses per adapter | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>MAX_PHYSICAL_PACKET = 2048;</code> | ||
+ | | Large enough for all media types | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Hardware addressing''' <code> HARDWARE_ADDRESS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HARDWARE_ADDRESS_SIZE = 6;</code> | ||
+ | | SizeOf(THardwareAddress) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Media type''' <code> MEDIA_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_UNKNOWN = $0000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_ETHERNET = $0001;</code> | ||
+ | | ARP type of Ethernet Hardware (This value must not change, it is the actual values used by ARP packets) | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_TOKENRING = $0006;</code> | ||
+ | | ARP type of Token-Ring Hardware (This value must not change, it is the actual values used by ARP packets) | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_IEEE80211 = $1000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_LOOPBACK = $1001;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_PPP = $1002;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>MEDIA_TYPE_SLIP = $1003;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Packet type''' <code> PACKET_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PACKET_MIN_TYPE = $0600;</code> | ||
+ | | If the value Ethernet header TypeLength field is greater than this the frame is Ethernet II | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_IP = $0800;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_IP6 = $86DD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_ARP = $0806;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_RARP = $8035;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_8021Q = $8100;</code> | ||
+ | | 802.1Q with extended Ethernet header | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_IPX = $8137;</code> | ||
+ | | IPX on EII | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_EAPOL = $888E;</code> | ||
+ | | EAP-over-LAN (EAPOL) | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_RSN = $88C7;</code> | ||
+ | | RSN pre-authentication | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_TDLS = $890D;</code> | ||
+ | | Tunneled direct-link setup | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_RAW = $FFFF;</code> | ||
+ | | IPX on 802.3 | ||
+ | |- | ||
+ | | <code>PACKET_TYPE_LLC = $0001;</code> | ||
+ | | IPX on 802.2 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Generic MII registers (Management Interface)''' <code> MII_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MII_BMCR = $00;</code> | ||
+ | | Basic mode control register | ||
+ | |- | ||
+ | | <code>MII_BMSR = $01;</code> | ||
+ | | Basic mode status register | ||
+ | |- | ||
+ | | <code>MII_PHYSID1 = $02;</code> | ||
+ | | PHYS ID 1 | ||
+ | |- | ||
+ | | <code>MII_PHYSID2 = $03;</code> | ||
+ | | PHYS ID 2 | ||
+ | |- | ||
+ | | <code>MII_ADVERTISE = $04;</code> | ||
+ | | Advertisement control reg | ||
+ | |- | ||
+ | | <code>MII_LPA = $05;</code> | ||
+ | | Link partner ability reg | ||
+ | |- | ||
+ | | <code>MII_EXPANSION = $06;</code> | ||
+ | | Expansion register | ||
+ | |- | ||
+ | | <code>MII_CTRL1000 = $09;</code> | ||
+ | | 1000BASE-T control | ||
+ | |- | ||
+ | | <code>MII_STAT1000 = $0a;</code> | ||
+ | | 1000BASE-T status | ||
+ | |- | ||
+ | | <code>MII_MMD_CTRL = $0d;</code> | ||
+ | | MMD Access Control Register | ||
+ | |- | ||
+ | | <code>MII_MMD_DATA = $0e;</code> | ||
+ | | MMD Access Data Register | ||
+ | |- | ||
+ | | <code>MII_ESTATUS = $0f;</code> | ||
+ | | Extended Status | ||
+ | |- | ||
+ | | <code>MII_DCOUNTER = $12;</code> | ||
+ | | Disconnect counter | ||
+ | |- | ||
+ | | <code>MII_FCSCOUNTER = $13;</code> | ||
+ | | False carrier counter | ||
+ | |- | ||
+ | | <code>MII_NWAYTEST = $14;</code> | ||
+ | | N-way auto-neg test reg | ||
+ | |- | ||
+ | | <code>MII_RERRCOUNTER = $15;</code> | ||
+ | | Receive error counter | ||
+ | |- | ||
+ | | <code>MII_SREVISION = $16;</code> | ||
+ | | Silicon revision | ||
+ | |- | ||
+ | | <code>MII_RESV1 = $17;</code> | ||
+ | | Reserved... | ||
+ | |- | ||
+ | | <code>MII_LBRERROR = $18;</code> | ||
+ | | Lpback, rx, bypass error | ||
+ | |- | ||
+ | | <code>MII_PHYADDR = $19;</code> | ||
+ | | PHY address | ||
+ | |- | ||
+ | | <code>MII_RESV2 = $1a;</code> | ||
+ | | Reserved... | ||
+ | |- | ||
+ | | <code>MII_TPISTATUS = $1b;</code> | ||
+ | | TPI status for 10mbps | ||
+ | |- | ||
+ | | <code>MII_NCONFIG = $1c;</code> | ||
+ | | Network interface config | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Basic mode control register''' <code> BMCR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>BMCR_RESV = $003f;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | | <code>BMCR_SPEED1000 = $0040;</code> | ||
+ | | MSB of Speed (1000) | ||
+ | |- | ||
+ | | <code>BMCR_CTST = $0080;</code> | ||
+ | | Collision test | ||
+ | |- | ||
+ | | <code>BMCR_FULLDPLX = $0100;</code> | ||
+ | | Full duplex | ||
+ | |- | ||
+ | | <code>BMCR_ANRESTART = $0200;</code> | ||
+ | | Auto negotiation restart | ||
+ | |- | ||
+ | | <code>BMCR_ISOLATE = $0400;</code> | ||
+ | | Isolate data paths from MII | ||
+ | |- | ||
+ | | <code>BMCR_PDOWN = $0800;</code> | ||
+ | | Enable low power state | ||
+ | |- | ||
+ | | <code>BMCR_ANENABLE = $1000;</code> | ||
+ | | Enable auto negotiation | ||
+ | |- | ||
+ | | <code>BMCR_SPEED100 = $2000;</code> | ||
+ | | Select 100Mbps | ||
+ | |- | ||
+ | | <code>BMCR_LOOPBACK = $4000;</code> | ||
+ | | TXD loopback bits | ||
+ | |- | ||
+ | | <code>BMCR_RESET = $8000;</code> | ||
+ | | Reset to default state | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Basic mode status register''' <code> BMSR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>BMSR_ERCAP = $0001;</code> | ||
+ | | Ext-reg capability | ||
+ | |- | ||
+ | | <code>BMSR_JCD = $0002;</code> | ||
+ | | Jabber detected | ||
+ | |- | ||
+ | | <code>BMSR_LSTATUS = $0004;</code> | ||
+ | | Link status | ||
+ | |- | ||
+ | | <code>BMSR_ANEGCAPABLE = $0008;</code> | ||
+ | | Able to do auto-negotiation | ||
+ | |- | ||
+ | | <code>BMSR_RFAULT = $0010;</code> | ||
+ | | Remote fault detected | ||
+ | |- | ||
+ | | <code>BMSR_ANEGCOMPLETE = $0020;</code> | ||
+ | | Auto-negotiation complete | ||
+ | |- | ||
+ | | <code>BMSR_RESV = $00c0;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | | <code>BMSR_ESTATEN = $0100;</code> | ||
+ | | Extended Status in R15 | ||
+ | |- | ||
+ | | <code>BMSR_100HALF2 = $0200;</code> | ||
+ | | Can do 100BASE-T2 HDX | ||
+ | |- | ||
+ | | <code>BMSR_100FULL2 = $0400;</code> | ||
+ | | Can do 100BASE-T2 FDX | ||
+ | |- | ||
+ | | <code>BMSR_10HALF = $0800;</code> | ||
+ | | Can do 10mbps, half-duplex | ||
+ | |- | ||
+ | | <code>BMSR_10FULL = $1000;</code> | ||
+ | | Can do 10mbps, full-duplex | ||
+ | |- | ||
+ | | <code>BMSR_100HALF = $2000;</code> | ||
+ | | Can do 100mbps, half-duplex | ||
+ | |- | ||
+ | | <code>BMSR_100FULL = $4000;</code> | ||
+ | | Can do 100mbps, full-duplex | ||
+ | |- | ||
+ | | <code>BMSR_100BASE4 = $8000;</code> | ||
+ | | Can do 100mbps, 4k packets | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Advertisement control register''' <code> ADVERTISE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ADVERTISE_SLCT = $001f;</code> | ||
+ | | Selector bits | ||
+ | |- | ||
+ | | <code>ADVERTISE_CSMA = $0001;</code> | ||
+ | | Only selector supported | ||
+ | |- | ||
+ | | <code>ADVERTISE_10HALF = $0020;</code> | ||
+ | | Try for 10mbps half-duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_1000XFULL = $0020;</code> | ||
+ | | Try for 1000BASE-X full-duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_10FULL = $0040;</code> | ||
+ | | Try for 10mbps full-duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_1000XHALF = $0040;</code> | ||
+ | | Try for 1000BASE-X half-duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_100HALF = $0080;</code> | ||
+ | | Try for 100mbps half-duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_1000XPAUSE = $0080;</code> | ||
+ | | Try for 1000BASE-X pause | ||
+ | |- | ||
+ | | <code>ADVERTISE_100FULL = $0100;</code> | ||
+ | | Try for 100mbps full-duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_1000XPSE_ASYM = $0100;</code> | ||
+ | | Try for 1000BASE-X asym pause | ||
+ | |- | ||
+ | | <code>ADVERTISE_100BASE4 = $0200;</code> | ||
+ | | Try for 100mbps 4k packets | ||
+ | |- | ||
+ | | <code>ADVERTISE_PAUSE_CAP = $0400;</code> | ||
+ | | Try for pause | ||
+ | |- | ||
+ | | <code>ADVERTISE_PAUSE_ASYM = $0800;</code> | ||
+ | | Try for asymetric pause | ||
+ | |- | ||
+ | | <code>ADVERTISE_RESV = $1000;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | | <code>ADVERTISE_RFAULT = $2000;</code> | ||
+ | | Say we can detect faults | ||
+ | |- | ||
+ | | <code>ADVERTISE_LPACK = $4000;</code> | ||
+ | | Ack link partners response | ||
+ | |- | ||
+ | | <code>ADVERTISE_NPAGE = $8000;</code> | ||
+ | | Next page bit | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ADVERTISE_FULL = ADVERTISE_100FULL or ADVERTISE_10FULL or ADVERTISE_CSMA;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ADVERTISE_ALL = ADVERTISE_10HALF or ADVERTISE_10FULL or ADVERTISE_100HALF or ADVERTISE_100FULL;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Link partner ability register''' <code> LPA_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>LPA_SLCT = $001f;</code> | ||
+ | | Same as advertise selector | ||
+ | |- | ||
+ | | <code>LPA_10HALF = $0020;</code> | ||
+ | | Can do 10mbps half-duplex | ||
+ | |- | ||
+ | | <code>LPA_1000XFULL = $0020;</code> | ||
+ | | Can do 1000BASE-X full-duplex | ||
+ | |- | ||
+ | | <code>LPA_10FULL = $0040;</code> | ||
+ | | Can do 10mbps full-duplex | ||
+ | |- | ||
+ | | <code>LPA_1000XHALF = $0040;</code> | ||
+ | | Can do 1000BASE-X half-duplex | ||
+ | |- | ||
+ | | <code>LPA_100HALF = $0080;</code> | ||
+ | | Can do 100mbps half-duplex | ||
+ | |- | ||
+ | | <code>LPA_1000XPAUSE = $0080;</code> | ||
+ | | Can do 1000BASE-X pause | ||
+ | |- | ||
+ | | <code>LPA_100FULL = $0100;</code> | ||
+ | | Can do 100mbps full-duplex | ||
+ | |- | ||
+ | | <code>LPA_1000XPAUSE_ASYM = $0100;</code> | ||
+ | | Can do 1000BASE-X pause asym | ||
+ | |- | ||
+ | | <code>LPA_100BASE4 = $0200;</code> | ||
+ | | Can do 100mbps 4k packets | ||
+ | |- | ||
+ | | <code>LPA_PAUSE_CAP = $0400;</code> | ||
+ | | Can pause | ||
+ | |- | ||
+ | | <code>LPA_PAUSE_ASYM = $0800;</code> | ||
+ | | Can pause asymetrically | ||
+ | |- | ||
+ | | <code>LPA_RESV = $1000;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | | <code>LPA_RFAULT = $2000;</code> | ||
+ | | Link partner faulted | ||
+ | |- | ||
+ | | <code>LPA_LPACK = $4000;</code> | ||
+ | | Link partner acked us | ||
+ | |- | ||
+ | | <code>LPA_NPAGE = $8000;</code> | ||
+ | | Next page bit | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>LPA_DUPLEX = LPA_10FULL or LPA_100FULL;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>LPA_100 = LPA_100FULL or LPA_100HALF or LPA_100BASE4;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Expansion register for auto-negotiation''' <code> EXPANSION_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>EXPANSION_NWAY = $0001;</code> | ||
+ | | Can do N-way auto-nego | ||
+ | |- | ||
+ | | <code>EXPANSION_LCWP = $0002;</code> | ||
+ | | Got new RX page code word | ||
+ | |- | ||
+ | | <code>EXPANSION_ENABLENPAGE = $0004;</code> | ||
+ | | This enables npage words | ||
+ | |- | ||
+ | | <code>EXPANSION_NPCAPABLE = $0008;</code> | ||
+ | | Link partner supports npage | ||
+ | |- | ||
+ | | <code>EXPANSION_MFAULTS = $0010;</code> | ||
+ | | Multiple faults detected | ||
+ | |- | ||
+ | | <code>EXPANSION_RESV = $ffe0;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Estatus register''' <code> ESTATUS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ESTATUS_1000_TFULL = $2000;</code> | ||
+ | | Can do 1000BT Full | ||
+ | |- | ||
+ | | <code>ESTATUS_1000_THALF = $1000;</code> | ||
+ | | Can do 1000BT Half | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''N-way test register''' <code> NWAYTEST_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NWAYTEST_RESV1 = $00ff;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | | <code>NWAYTEST_LOOPBACK = $0100;</code> | ||
+ | | Enable loopback for N-way | ||
+ | |- | ||
+ | | <code>NWAYTEST_RESV2 = $fe00;</code> | ||
+ | | Unused... | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''1000BASE-T control register''' <code> *_1000* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ADVERTISE_1000FULL = $0200;</code> | ||
+ | | Advertise 1000BASE-T full duplex | ||
+ | |- | ||
+ | | <code>ADVERTISE_1000HALF = $0100;</code> | ||
+ | | Advertise 1000BASE-T half duplex | ||
+ | |- | ||
+ | | <code>CTL1000_AS_MASTER = $0800;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CTL1000_ENABLE_MASTER = $1000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''1000BASE-T Status register''' <code> LPA_1000* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>LPA_1000MSFAIL = $8000;</code> | ||
+ | | Master/Slave resolution failure | ||
+ | |- | ||
+ | | <code>LPA_1000LOCALRXOK = $2000;</code> | ||
+ | | Link partner local receiver status | ||
+ | |- | ||
+ | | <code>LPA_1000REMRXOK = $1000;</code> | ||
+ | | Link partner remote receiver status | ||
+ | |- | ||
+ | | <code>LPA_1000FULL = $0800;</code> | ||
+ | | Link partner 1000BASE-T full duplex | ||
+ | |- | ||
+ | | <code>LPA_1000HALF = $0400;</code> | ||
+ | | Link partner 1000BASE-T half duplex | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Flow control flags''' <code> FLOW_CTRL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>FLOW_CTRL_TX = $01;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>FLOW_CTRL_RX = $02;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''MMD access control register fields''' <code> MII_MMD_CTRL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MII_MMD_CTRL_DEVAD_MASK = $1f;</code> | ||
+ | | Mask MMD DEVAD | ||
+ | |- | ||
+ | | <code>MII_MMD_CTRL_ADDR = $0000;</code> | ||
+ | | Address | ||
+ | |- | ||
+ | | <code>MII_MMD_CTRL_NOINCR = $4000;</code> | ||
+ | | No post increment | ||
+ | |- | ||
+ | | <code>MII_MMD_CTRL_INCR_RDWT = $8000;</code> | ||
+ | | Post increment on reads & writes | ||
+ | |- | ||
+ | | <code>MII_MMD_CTRL_INCR_ON_WT = $C000;</code> | ||
+ | | Post increment on writes only | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''PHY link state''' <code> PHY_LINK_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PHY_LINK_DOWN = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PHY_LINK_UP = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PHY_LINK_UNKNOWN = -1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''PHY interface mode''' <code> PHY_INTERFACE_MODE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_NONE = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_INTERNAL = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_MII = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_GMII = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_SGMII = 4;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_TBI = 5;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_REVMII = 6;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RMII = 7;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RGMII = 8;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RGMII_ID = 9;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RGMII_RXID = 10;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RGMII_TXID = 11;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RTBI = 12;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_SMII = 13;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_XGMII = 14;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_MOCA = 15;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_QSGMII = 16;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_TRGMII = 17;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_1000BASEX = 18;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_2500BASEX = 19;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_RXAUI = 20;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_XAUI = 21;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_10GKR = 22;</code> | ||
+ | | 10GBASE-KR, XFI, SFI - single lane 10G Serdes | ||
+ | |- | ||
+ | | <code>PHY_INTERFACE_MODE_USXGMII = 23;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''PHY link speed''' <code> PHY_SPEED_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PHY_SPEED_10 = 10;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PHY_SPEED_100 = 100;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PHY_SPEED_1000 = 1000;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PHY_SPEED_UNKNOWN = -1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''PHY duplex mode''' <code> PHY_DUPLEX_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>PHY_DUPLEX_HALF = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PHY_DUPLEX_FULL = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PHY_DUPLEX_UNKNOWN = -1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Service set''' <code> SERVICE_SET_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SERVICE_SET_UNKNOWN = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SERVICE_SET_BSS = 1;</code> | ||
+ | | Basic Service Set | ||
+ | |- | ||
+ | | <code>SERVICE_SET_ESS = 2;</code> | ||
+ | | Extended Service Set | ||
+ | |- | ||
+ | | <code>SERVICE_SET_IBSS = 3;</code> | ||
+ | | Independent Basic Service Set | ||
+ | |- | ||
+ | | <code>SERVICE_SET_MBSS = 4;</code> | ||
+ | | Mesh Basic Service Set | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Network logging''' <code> NETWORK_LOG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NETWORK_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;</code> | ||
+ | | Network debugging messages | ||
+ | |- | ||
+ | | <code>NETWORK_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | ||
+ | | Network informational messages, such as a device being attached or detached | ||
+ | |- | ||
+ | | <code>NETWORK_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
+ | | Network warning messages | ||
+ | |- | ||
+ | | <code>NETWORK_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
+ | | Network error messages | ||
+ | |- | ||
+ | | <code>NETWORK_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | ||
+ | | No Network messages | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Ethernet specific constants''' <code> ETHERNET_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ETHERNET_ADDRESS_SIZE = 6;</code> | ||
+ | | SizeOf(TEthernetAddress) | ||
+ | |- | ||
+ | | <code>ETHERNET_HEADER_SIZE = 14;</code> | ||
+ | | SizeOf(TEthernetHeader) | ||
+ | |- | ||
+ | | <code>ETHERNET_VLAN_SIZE = 4;</code> | ||
+ | | Length of Ethernet VLAN tag | ||
+ | |- | ||
+ | | <code>ETHERNET_CRC_SIZE = 4;</code> | ||
+ | | Length of Ethernet CRC (FCS) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ETHERNET_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ETHERNET_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ETHERNET_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ETHERNET_MULTICAST:THardwareAddress = ($01,$00,$5E,$00,$00,$00);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Ethernet size''' <code> ETHERNET_*_SIZE* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ETHERNET_MTU = 1500;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ETHERNET_MIN_PAYLOAD = 46;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ETHERNET_MIN_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MIN_PAYLOAD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ETHERNET_MAX_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Ethernet 802.3 network''' <code> LLC_HEADER_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|FRAME_TYPE_ETHERNET_8022 | ||
+ | |- | ||
+ | | <code>LLC_HEADER_SIZE = 3;</code> | ||
+ | | SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Ethernet SNAP network''' <code> SNAP_HEADER_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|FRAME_TYPE_ETHERNET_SNAP | ||
+ | |- | ||
+ | | <code>SNAP_HEADER_SIZE = 5;</code> | ||
+ | | SizeOf(TSNAPHeader); | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === | ||
---- | ---- | ||
− | '' | + | |
+ | '''Hardware address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PHardwareAddress = ^THardwareAddress;</code> | ||
+ | |||
+ | <code>THardwareAddress = array[0..HARDWARE_ADDRESS_SIZE - 1] of Byte;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Hardware addresses''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PHardwareAddresses = ^THardwareAddresses;</code> | ||
+ | |||
+ | <code>THardwareAddresses = array[0..0] of THardwareAddress;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Multicast address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PMulticastAddresses = ^TMulticastAddresses;</code> | ||
+ | |||
+ | <code>TMulticastAddresses = array[0..MAX_MULTICAST_ADDRESS - 1] of THardwareAddress;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Packet fragment''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPacketFragment = ^TPacketFragment;</code> | ||
+ | |||
+ | <code>TPacketFragment = packed record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Size:Integer;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Data:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Next:PPacketFragment;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Adapter statistics''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PAdapterStatistics = ^TAdapterStatistics;</code> | ||
+ | |||
+ | <code>TAdapterStatistics = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | PacketsIn:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | PacketsOut:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | BytesIn:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | BytesOut:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | ErrorsIn:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | ErrorsOut:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | PacketsLost:UInt64; | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network packet''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkPacket = ^TNetworkPacket;</code> | ||
+ | |||
+ | <code>TNetworkPacket = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Buffer:Pointer;</code> | ||
+ | | Pointer to buffer (Set by driver that owns this packet) | ||
+ | |- | ||
+ | | <code>Data:Pointer;</code> | ||
+ | | Start of data within buffer (Set by driver that owns this packet) | ||
+ | |- | ||
+ | | <code>Length:LongInt;</code> | ||
+ | | Length of packet data (Set by driver on Receive/Set by caller on Transmit, contains maximum length on Allocate) | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | Packet specific flags (eg Error, Broadcast etc) (Dependent on network type) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network Buffer''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkBuffer = ^TNetworkBuffer;</code> | ||
+ | |||
+ | <code>TNetworkBuffer = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Wait:TSemaphoreHandle;</code> | ||
+ | | Packet ready semaphore | ||
+ | |- | ||
+ | | <code>Start:LongWord;</code> | ||
+ | | Index of first packet ready | ||
+ | |- | ||
+ | | <code>Count:LongWord;</code> | ||
+ | | Number of packets ready in buffer | ||
+ | |- | ||
+ | | <code>Packets:array[0..(NETWORK_BUFFER_SIZE - 1)] of PNetworkPacket;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkEntry = ^TNetworkEntry;</code> | ||
+ | |||
+ | <code>TNetworkEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Buffer:Pointer;</code> | ||
+ | | Pointer to buffer (Allocated by driver that owns this entry) | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | Size of the buffer (Total size, usable size is Size minus Offset) | ||
+ | |- | ||
+ | | <code>Offset:LongWord;</code> | ||
+ | | Offset to start of data (Data for first packet will be at Buffer plus Offset, must be less than size) | ||
+ | |- | ||
+ | | <code>Count:LongWord;</code> | ||
+ | | Number of packets in the entry (Set by driver that owns this entry, must be at least one) | ||
+ | |- | ||
+ | | <code>DriverData:Pointer;</code> | ||
+ | | Driver private data (Managed by driver that owns this entry) | ||
+ | |- | ||
+ | | <code>Packets:array of TNetworkPacket; {Array of 0 to Count - 1 packets in this entry</code> | ||
+ | | Allocated by driver that owns this entry, must be at least one) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network queue''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkQueue = ^TNetworkQueue;</code> | ||
+ | |||
+ | <code>TNetworkQueue = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Buffer:TBufferHandle;</code> | ||
+ | | Handle for entry buffers | ||
+ | |- | ||
+ | | <code>Wait:TSemaphoreHandle;</code> | ||
+ | | Entry ready semaphore | ||
+ | |- | ||
+ | | <code>Start:LongWord;</code> | ||
+ | | Index of first entry ready | ||
+ | |- | ||
+ | | <code>Count:LongWord;</code> | ||
+ | | Number of entries ready in queue | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | Queue specific flags (eg Paused, Halted etc) (Managed by driver) | ||
+ | |- | ||
+ | | <code>Entries:array of PNetworkEntry;</code> | ||
+ | | Array of 0 to Total - 1 entries in this queue (Allocated by driver that owns this queue) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network statistics''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkStatistics = ^TNetworkStatistics;</code> | ||
+ | |||
+ | <code>TNetworkStatistics = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Returned by NETWORK_CONTROL_GET_STATS) | ||
+ | |- | ||
+ | | <code>ReceiveBytes:UInt64;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ReceiveCount:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ReceiveErrors:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransmitBytes:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransmitCount:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransmitErrors:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>StatusCount:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>StatusErrors:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BufferOverruns:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BufferUnavailable:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network enumeration callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkEnumerate = function(Network:PNetworkDevice; Data:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network notification callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network device open''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkDeviceOpen = function(Network:PNetworkDevice):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network device close''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkDeviceClose = function(Network:PNetworkDevice):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network device read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkDeviceRead = function(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network device write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkDeviceWrite = function(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network device control''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkDeviceControl = function(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network buffer allocate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkBufferAllocate = function(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network buffer release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkBufferRelease = function(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network buffer receive''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkBufferReceive = function(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network buffer transmit''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkBufferTransmit = function(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network device''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkDevice = ^TNetworkDevice;</code> | ||
+ | |||
+ | <code>TNetworkDevice = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Device Properties'' | ||
+ | |- | ||
+ | | <code>Device:TDevice;</code> | ||
+ | | The Device entry for this Network | ||
+ | |- | ||
+ | |colspan="2"|''Network Properties'' | ||
+ | |- | ||
+ | | <code>NetworkId:LongWord;</code> | ||
+ | | Unique Id of this Network in the Network table | ||
+ | |- | ||
+ | | <code>NetworkState:LongWord;</code> | ||
+ | | Network state (eg NETWORK_STATE_OPEN) | ||
+ | |- | ||
+ | | <code>NetworkStatus:LongWord;</code> | ||
+ | | Network status (eg NETWORK_STATUS_UP) | ||
+ | |- | ||
+ | | <code>DeviceOpen:TNetworkDeviceOpen;</code> | ||
+ | | A Device specific DeviceOpen method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>DeviceClose:TNetworkDeviceClose;</code> | ||
+ | | A Device specific DeviceClose method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>DeviceRead:TNetworkDeviceRead;</code> | ||
+ | | A Device specific DeviceRead method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>DeviceWrite:TNetworkDeviceWrite;</code> | ||
+ | | A Device specific DeviceWrite method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>DeviceControl:TNetworkDeviceControl;</code> | ||
+ | | A Device specific DeviceControl method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>BufferAllocate:TNetworkBufferAllocate;</code> | ||
+ | | A Device specific BufferAllocate method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>BufferRelease:TNetworkBufferRelease;</code> | ||
+ | | A Device specific BufferRelease method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>BufferReceive:TNetworkBufferReceive;</code> | ||
+ | | A Device specific BufferReceive method implementing a standard Network device interface | ||
+ | |- | ||
+ | | <code>BufferTransmit:TNetworkBufferTransmit;</code> | ||
+ | | A Device specific BufferTransmit method implementing a standard Network device interface | ||
+ | |- | ||
+ | |colspan="2"|''Driver Properties'' | ||
+ | |- | ||
+ | | <code>Lock:TMutexHandle;</code> | ||
+ | | Network lock | ||
+ | |- | ||
+ | | <code>Buffer:TNetworkBuffer;</code> | ||
+ | | Network receive buffer | ||
+ | |- | ||
+ | | <code>TransmitWait:TSemaphoreHandle;</code> | ||
+ | | Transmit complete semaphore | ||
+ | |- | ||
+ | | <code>ReceiveBuffer:TBufferHandle;</code> | ||
+ | | Buffer for receive packets | ||
+ | |- | ||
+ | | <code>TransmitBuffer:TBufferHandle;</code> | ||
+ | | Buffer for transmit packets | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ReceiveQueue:TNetworkQueue;</code> | ||
+ | | Queue for receive packets | ||
+ | |- | ||
+ | | <code>TransmitQueue:TNetworkQueue;</code> | ||
+ | | Queue for transmit packets (If applicable) | ||
+ | |- | ||
+ | |colspan="2"|''Statistics Properties'' | ||
+ | |- | ||
+ | | <code>ReceiveBytes:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ReceiveCount:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ReceiveErrors:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransmitBytes:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransmitCount:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransmitErrors:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>StatusCount:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>StatusErrors:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BufferOverruns:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BufferUnavailable:UInt64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PNetworkDevice;</code> | ||
+ | | Previous entry in Network table | ||
+ | |- | ||
+ | | <code>Next:PNetworkDevice;</code> | ||
+ | | Next entry in Network table | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network event callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TNetworkEventCallback = function(Data:Pointer; Event:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network Event''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PNetworkEvent = ^TNetworkEvent;</code> | ||
+ | |||
+ | <code>TNetworkEvent = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Event Properties'' | ||
+ | |- | ||
+ | | <code>Signature:LongWord;</code> | ||
+ | | Signature for entry validation | ||
+ | |- | ||
+ | | <code>EventState:LongWord;</code> | ||
+ | | Event state (eg Registered/Unregistered) | ||
+ | |- | ||
+ | | <code>EventFlags:LongWord;</code> | ||
+ | | Event flags (eg NETWORK_EVENT_FLAG_NONE) | ||
+ | |- | ||
+ | | <code>Callback:TNetworkEventCallback;</code> | ||
+ | | The callback for network events | ||
+ | |- | ||
+ | | <code>Data:Pointer;</code> | ||
+ | | A pointer to callback specific data to be passed with events (Optional) | ||
+ | |- | ||
+ | | <code>Event:LongWord;</code> | ||
+ | | The mask of events to notify on (eg NETWORK_EVENT_SYSTEM_START etc) | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PNetworkEvent;</code> | ||
+ | | Previous entry in Event table | ||
+ | |- | ||
+ | | <code>Next:PNetworkEvent;</code> | ||
+ | | Next entry in Event table | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Ethernet address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PEthernetAddress = ^TEthernetAddress;</code> | ||
+ | |||
+ | <code>TEthernetAddress = array[0..ETHERNET_ADDRESS_SIZE - 1] of Byte;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Ethernet header''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PEthernetHeader = ^TEthernetHeader;</code> | ||
+ | |||
+ | <code>TEthernetHeader = packed record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>DestAddress:THardwareAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SourceAddress:THardwareAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TypeLength:Word;</code> | ||
+ | | Length or Type (IEEE 802.3 or BlueBook/DIX Ethernet) | ||
+ | |- | ||
+ | | <code>Data:array[0..0] of Byte;</code> | ||
+ | | Not part of header, included to provide a pointer to the start of data | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Ethernet 802.3 network''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PLLCHeader = ^TLLCHeader;</code> | ||
+ | |||
+ | <code>TLLCHeader = packed record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: FRAME_TYPE_ETHERNET_8022 | ||
+ | |- | ||
+ | | <code>DSAP:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SSAP:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Control:Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Information:array[0..0] of Byte;</code> | ||
+ | | Optional (Control byte can be 1 or 2 octets) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Ethernet SNAP network''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PSNAPHeader = ^TSNAPHeader;</code> | ||
+ | |||
+ | <code>TSNAPHeader = packed record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: FRAME_TYPE_ETHERNET_SNAP | ||
+ | |- | ||
+ | | <code>OUI:array[0..2] of Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ProtocolID:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Data:array[0..0] of Byte;</code> | ||
+ | | Not part of header, included to provide a pointer to the start of data | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Adapter callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterCallback = function(AAdapter:TNetworkAdapter):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Adapter packet handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterPacketHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Adapter monitor handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterMonitorHandler = function(AHandle:THandle; APacket:Pointer; ASize:Integer; AStatus:Pointer):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Adapter authenticator handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterAuthenticatorHandler = function(AHandle:THandle; ACommand:Word):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
+ | |||
+ | === Class definitions === | ||
+ | ---- | ||
+ | |||
+ | |||
+ | '''Network specific classes''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterManager|<code>TAdapterManager = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterTransport|<code>TAdapterTransport = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterBinding|<code>TAdapterBinding = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterMonitor|<code>TAdapterMonitor = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterAuthenticator|<code>TAdapterAuthenticator = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkList|<code>TNetworkList = class(TLinkedObjList)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkAdapter|<code>TNetworkAdapter = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterThread|<code>TAdapterThread = class(TThread)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAdapterBuffer|<code>TAdapterBuffer = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TWiredAdapter|<code>TWiredAdapter = class(TNetworkAdapter)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkSetting|<code>TNetworkSetting = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkSettings|<code>TNetworkSettings = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TServiceSet|<code>TServiceSet = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
=== Public variables === | === Public variables === | ||
---- | ---- | ||
− | '' | + | |
+ | '''Network logging''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>NETWORK_DEFAULT_LOG_LEVEL:LongWord = NETWORK_LOG_LEVEL_DEBUG;</code> | ||
+ | | style="width: 40%;"|Minimum level for Network messages. Only messages with level greater than or equal to this will be printed. | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>NETWORK_LOG_ENABLED:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Network specific variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>AdapterManager:TAdapterManager;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>NetworkSettings:TNetworkSettings;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
=== Function declarations === | === Function declarations === | ||
Line 33: | Line 2,164: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| To be documented | | To be documented | ||
|- | |- | ||
Line 45: | Line 2,176: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 57: | Line 2,188: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 69: | Line 2,200: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| Returns True if the network sub system has been started | | Returns True if the network sub system has been started | ||
|- | |- | ||
Line 84: | Line 2,215: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 96: | Line 2,227: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 108: | Line 2,239: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 120: | Line 2,251: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 132: | Line 2,263: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 140: | Line 2,271: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
<pre style="border: 0; padding-bottom:0px;">function NetworkBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;</pre> | <pre style="border: 0; padding-bottom:0px;">function NetworkBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;</pre> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Allocate a transmit buffer from the specified network device, the returned entry will include a buffer for writing data to as well as an | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Allocate a transmit buffer from the specified network device, the returned entry will include a buffer for writing data to as well as an offset value to allow the driver data to be written to the start of the buffer. When the data has been copied to the buffer, pass the entry to NetworkBufferTransmit.</div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 156: | Line 2,287: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 168: | Line 2,299: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 180: | Line 2,311: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 192: | Line 2,323: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Network |
| The network to set the state for | | The network to set the state for | ||
|- | |- | ||
− | ! | + | ! State |
| The new state to set and notify | | The new state to set and notify | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 210: | Line 2,341: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Network |
| The network to set the status for | | The network to set the status for | ||
|- | |- | ||
− | ! | + | ! Status |
| The new status to set and notify | | The new status to set and notify | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 228: | Line 2,359: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to new Network entry or nil if network could not be created | | Pointer to new Network entry or nil if network could not be created | ||
|- | |- | ||
Line 240: | Line 2,371: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Size |
| Size in bytes to allocate for new network (Including the network entry) | | Size in bytes to allocate for new network (Including the network entry) | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to new Network entry or nil if network could not be created | | Pointer to new Network entry or nil if network could not be created | ||
|- | |- | ||
Line 255: | Line 2,386: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 267: | Line 2,398: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 279: | Line 2,410: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 291: | Line 2,422: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 303: | Line 2,434: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 315: | Line 2,446: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 327: | Line 2,458: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 339: | Line 2,470: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 351: | Line 2,482: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 359: | Line 2,490: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
<pre style="border: 0; padding-bottom:0px;">function NetworkEventRelease(Event:PNetworkEvent):LongWord;</pre> | <pre style="border: 0; padding-bottom:0px;">function NetworkEventRelease(Event:PNetworkEvent):LongWord;</pre> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Deregister and Destroy | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Deregister and Destroy an Event from the Event table</div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 375: | Line 2,506: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 387: | Line 2,518: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 399: | Line 2,530: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 414: | Line 2,545: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 426: | Line 2,557: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 438: | Line 2,569: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 450: | Line 2,581: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 460: | Line 2,591: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function NetworkGetCount:LongWord | + | <pre style="border: 0; padding-bottom:0px;">function NetworkGetLastError:LongInt;</pre> |
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the last network error value for the current Thread</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Return | ||
+ | | Last Network Error or ERROR_SUCCESS if no error | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure NetworkSetLastError(Error:LongInt);</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the last network error value for the current Thread</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function NetworkGetCount:LongWord;</pre> | ||
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current network count</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current network count</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 477: | Line 2,632: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 489: | Line 2,644: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 501: | Line 2,656: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 513: | Line 2,668: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 525: | Line 2,680: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 537: | Line 2,692: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 549: | Line 2,704: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 561: | Line 2,716: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 568: | Line 2,723: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure NetworkLogInfo(Network:PNetworkDevice; const AText:String);</pre> | + | <pre style="border: 0; padding-bottom:0px;">procedure NetworkLogInfo(Network:PNetworkDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 580: | Line 2,735: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure | + | <pre style="border: 0; padding-bottom:0px;">procedure NetworkLogWarn(Network:PNetworkDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 592: | Line 2,747: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure | + | <pre style="border: 0; padding-bottom:0px;">procedure NetworkLogError(Network:PNetworkDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 604: | Line 2,759: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;"> | + | <pre style="border: 0; padding-bottom:0px;">procedure NetworkLogDebug(Network:PNetworkDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! ''' | + | ! Note |
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function HardwareAddressToString(const AAddress:THardwareAddress; const ASeparator: String = ''):String;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
| None documented | | None documented | ||
|- | |- | ||
Line 621: | Line 2,788: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! '''Note''' | + | ! Note |
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function ValidHardwareAddress(const AAddress:THardwareAddress):Boolean;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RandomHardwareAddress:THardwareAddress;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
| None documented | | None documented | ||
|- | |- | ||
Line 633: | Line 2,824: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 645: | Line 2,836: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 657: | Line 2,848: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 669: | Line 2,860: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 681: | Line 2,872: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 693: | Line 2,884: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 705: | Line 2,896: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 717: | Line 2,908: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 729: | Line 2,920: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 741: | Line 2,932: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 753: | Line 2,944: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 760: | Line 2,951: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function | + | <pre style="border: 0; padding-bottom:0px;">function PacketTypeToString(AType:Word):String;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 777: | Line 2,968: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 789: | Line 2,980: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 801: | Line 2,992: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 813: | Line 3,004: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- |
Latest revision as of 04:46, 10 October 2023
Return to Unit Reference
Contents
Description
Ultibo Network Interface unit
Constants
NETWORK_*
NETWORK_NAME_PREFIX = 'Network';
|
Name prefix for Network Devices |
Generic Network | |
HARDWARE_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);
|
|
HARDWARE_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);
|
|
HARDWARE_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);
|
NETWORK_TYPE_*
NETWORK_TYPE_NONE = 0;
|
|
NETWORK_TYPE_ETHERNET = 1;
|
|
NETWORK_TYPE_TOKENRING = 2;
|
|
NETWORK_TYPE_80211 = 3;
|
IEEE 802.11 Wireless (WiFi) network |
NETWORK_TYPE_MAX = 3;
|
NETWORK_STATE_*
NETWORK_STATE_CLOSED = 0;
|
|
NETWORK_STATE_CLOSING = 1;
|
|
NETWORK_STATE_OPENING = 2;
|
|
NETWORK_STATE_OPEN = 3;
|
|
NETWORK_STATE_MAX = 3;
|
NETWORK_STATUS_*
NETWORK_STATUS_DOWN = 0;
|
|
NETWORK_STATUS_UP = 1;
|
|
NETWORK_STATUS_MAX = 1;
|
NETWORK_FLAG_*
NETWORK_FLAG_NONE = $00000000;
|
|
NETWORK_FLAG_RX_BUFFER = $00000001;
|
Device supports Receive Buffer (NetworkBufferReceive/NetworkBufferRelease) |
NETWORK_FLAG_TX_BUFFER = $00000002;
|
Device supports Transmit Buffer (NetworkBufferAllocate/NetworkBufferTransmit) |
NETWORK_FLAG_RX_MULTIPACKET = $00000004;
|
Device supports multiple packets in the same Receive entry |
NETWORK_FLAG_TX_MULTIPACKET = $00000008;
|
Device supports multiple packets in the same Transmit entry |
NETWORK_CONTROL_*
NETWORK_CONTROL_CLEAR_STATS = 1;
|
Clear Statistics |
NETWORK_CONTROL_SET_MAC = 2;
|
Set the MAC for this device |
NETWORK_CONTROL_GET_MAC = 3;
|
Get the MAC for this device |
NETWORK_CONTROL_SET_LOOPBACK = 4;
|
Set Loopback Mode |
NETWORK_CONTROL_RESET = 5;
|
Reset the device |
NETWORK_CONTROL_DISABLE = 6;
|
Disable the device |
NETWORK_CONTROL_GET_BROADCAST = 8;
|
Get Broadcast address for this device |
NETWORK_CONTROL_GET_MTU = 9;
|
Get MTU for this device |
NETWORK_CONTROL_GET_HEADERLEN = 10;
|
Get Header length for this device |
NETWORK_CONTROL_GET_LINK = 11;
|
Get link status for this device |
NETWORK_CONTROL_GET_SPEED = 12;
|
Get link speed for this device |
NETWORK_CONTROL_GET_DUPLEX = 13;
|
Get link speed for this device |
NETWORK_CONTROL_RESET_LINK = 14;
|
Reset link for this device |
NETWORK_CONTROL_GET_STATS = 15;
|
Get statistics for this device |
NETWORK_CONTROL_ADD_MULTICAST = 16;
|
Add a multicast address to this device |
NETWORK_CONTROL_DEL_MULTICAST = 17;
|
Delete a multicast address from this device |
NETWORK_CONTROL_GET_MULTICAST = 18;
|
Get the list of multicast address for this device |
NETWORK_LINK_*
NETWORK_LINK_DOWN = NETWORK_STATUS_DOWN;
|
|
NETWORK_LINK_UP = NETWORK_STATUS_UP;
|
NETWORK_SPEED_*
NETWORK_SPEED_NONE = 0;
|
|
NETWORK_SPEED_10 = 10;
|
|
NETWORK_SPEED_100 = 100;
|
|
NETWORK_SPEED_1000 = 1000;
|
NETWORK_DUPLEX_*
NETWORK_DUPLEX_NONE = 0;
|
|
NETWORK_DUPLEX_HALF = 1;
|
|
NETWORK_DUPLEX_FULL = 2;
|
NETWORK_LOCK_*
NETWORK_LOCK_NONE = 0;
|
|
NETWORK_LOCK_READ = 1;
|
|
NETWORK_LOCK_WRITE = 2;
|
NETWORK_BUFFER_*
NETWORK_BUFFER_SIZE = 1024;
|
NETWORK_EVENT_*
NETWORK_EVENT_NONE = $00000000;
|
|
NETWORK_EVENT_SYSTEM_START = $00000001;
|
The network sub system is starting |
NETWORK_EVENT_SYSTEM_STOP = $00000002;
|
The network sub system has stopped |
NETWORK_EVENT_ADAPTERS_START = $00000004;
|
All network adapters are being started |
NETWORK_EVENT_ADAPTERS_STOP = $00000008;
|
All network adapters have been stopped |
NETWORK_EVENT_TRANSPORTS_START = $00000010;
|
All network transports are being started |
NETWORK_EVENT_TRANSPORTS_STOP = $00000020;
|
All network transports have been stopped |
NETWORK_EVENT_PROTOCOLS_START = $00000040;
|
All network protocols are being started |
NETWORK_EVENT_PROTOCOLS_STOP = $00000080;
|
All network protocols have been stopped |
NETWORK_EVENT_SIGNATURE*
NETWORK_EVENT_SIGNATURE = $BE1D50C2;
|
NETWORK_EVENT_STATE_*
NETWORK_EVENT_STATE_UNREGISTERED = 0;
|
|
NETWORK_EVENT_STATE_REGISTERED = 1;
|
NETWORK_EVENT_FLAG_*
NETWORK_EVENT_FLAG_NONE = $00000000;
|
ADAPTER_TYPE_*
ADAPTER_TYPE_UNKNOWN = 0;
|
|
ADAPTER_TYPE_WIRED = 1;
|
|
ADAPTER_TYPE_LOOPBACK = 2;
|
|
ADAPTER_TYPE_WIRELESS = 3;
|
|
ADAPTER_TYPE_SLIP = 4;
|
|
ADAPTER_TYPE_PPP = 5;
|
ADAPTER_THREAD_*
ADAPTER_THREAD_NAME = 'Network Adapter';
|
Thread name for Network adapter threads |
ADAPTER_THREAD_PRIORITY = THREAD_PRIORITY_HIGHER;
|
Thread priority for Network adapter threads |
ADAPTER_STATE_*
ADAPTER_STATE_DISABLED = 0;
|
|
ADAPTER_STATE_ENABLED = 1;
|
ADAPTER_STATUS_*
ADAPTER_STATUS_DOWN = 0;
|
|
ADAPTER_STATUS_UP = 1;
|
CONFIG_TYPE_*
CONFIG_TYPE_AUTO = 0;
|
|
CONFIG_TYPE_STATIC = 1;
|
|
CONFIG_TYPE_RARP = 2;
|
|
CONFIG_TYPE_BOOTP = 3;
|
|
CONFIG_TYPE_DHCP = 4;
|
|
CONFIG_TYPE_PSEUDO = 5;
|
|
CONFIG_TYPE_LOOPBACK = 6;
|
|
CONFIG_TYPE_SLIP = 7;
|
|
CONFIG_TYPE_PPP = 8;
|
|
CONFIG_TYPE_UNKNOWN = Word(-1);
|
AUTH_TYPE_*
AUTH_TYPE_UNKNOWN = 0;
|
|
AUTH_TYPE_EAP = 1;
|
|
AUTH_TYPE_RSN = 2;
|
FRAME_TYPE_*
FRAME_TYPE_UNKNOWN = 0;
|
|
FRAME_TYPE_ETHERNET_II = 1;
|
Blue Book |
FRAME_TYPE_TOKEN_RING = 3;
|
IEEE 802.5 |
FRAME_TYPE_APPLETALK = 5;
|
LocalTalk |
FRAME_TYPE_ETHERNET_8022 = 11;
|
IEEE 802.2 LLC |
FRAME_TYPE_ETHERNET_SNAP = 98;
|
IEEE 802.2 LLC with SNAP Header |
FRAME_TYPE_ETHERNET_8023 = 99;
|
802.3 RAW (Novell) |
FRAME_START_ETHERNET_SNAP = $AAAA;
|
|
FRAME_START_ETHERNET_8023 = $FFFF;
|
|
ADAPTER_MODE_NONE = 1;
|
|
ADAPTER_MODE_LOCAL = 2;
|
|
ADAPTER_MODE_BROADCAST= 3;
|
This is the default |
ADAPTER_MODE_LOCAL_MULTI = 4;
|
Mode 3 plus directed Multicast |
ADAPTER_MODE_BROADCAST_MULTI = 5;
|
Mode 3 plus all Multicast |
ADAPTER_MODE_PROMISCUOUS = 6;
|
Promiscuous mode |
CONFIG_*
CONFIG_ADAPTER_DISCOVER = 0;
|
Discover an Address from the ConfigHandler |
CONFIG_ADAPTER_REQUEST = 1;
|
Request an Address from the ConfigHandler (Either configured or obtained from Discover) |
CONFIG_ADAPTER_RELEASE = 2;
|
Release the Address obtained from ConfigHandler |
CONFIG_ADAPTER_RENEW = 3;
|
Renew the Address obtained from ConfigHandler |
CONFIG_ADAPTER_REBIND = 4;
|
Rebind the Address obtained from ConfigHandler |
CONFIG_ADAPTER_INFORM = 5;
|
Obtain information only from the ConfigHandler |
CONFIG_ADAPTER_REBOOT = 6;
|
Request previous Address after a Reboot |
CONFIG_RETRY_TIMEOUT = 300000;
|
5 min Config Retry Timeout |
CONFIG_RENEW_TIMEOUT = 60000;
|
1 min Config Renew Timeout |
CONFIG_REBIND_TIMEOUT = 60000;
|
1 min Config Rebind Timeout |
AUTH_COMMAND_*
AUTH_COMMAND_ASSOCIATE = 0;
|
|
AUTH_COMMAND_DISASSOCIATE = 1;
|
|
AUTH_COMMAND_AUTHENTICATE = 2;
|
|
AUTH_COMMAND_UNAUTHENTICATE = 3;
|
MAX_MULTICAST_*
MAX_MULTICAST_ADDRESS = 8;
|
Maximum number of addresses per adapter |
MAX_PHYSICAL_PACKET = 2048;
|
Large enough for all media types |
HARDWARE_ADDRESS_*
HARDWARE_ADDRESS_SIZE = 6;
|
SizeOf(THardwareAddress) |
MEDIA_TYPE_*
MEDIA_TYPE_UNKNOWN = $0000;
|
|
MEDIA_TYPE_ETHERNET = $0001;
|
ARP type of Ethernet Hardware (This value must not change, it is the actual values used by ARP packets) |
MEDIA_TYPE_TOKENRING = $0006;
|
ARP type of Token-Ring Hardware (This value must not change, it is the actual values used by ARP packets) |
MEDIA_TYPE_IEEE80211 = $1000;
|
|
MEDIA_TYPE_LOOPBACK = $1001;
|
|
MEDIA_TYPE_PPP = $1002;
|
|
MEDIA_TYPE_SLIP = $1003;
|
PACKET_TYPE_*
PACKET_MIN_TYPE = $0600;
|
If the value Ethernet header TypeLength field is greater than this the frame is Ethernet II |
PACKET_TYPE_IP = $0800;
|
|
PACKET_TYPE_IP6 = $86DD;
|
|
PACKET_TYPE_ARP = $0806;
|
|
PACKET_TYPE_RARP = $8035;
|
|
PACKET_TYPE_8021Q = $8100;
|
802.1Q with extended Ethernet header |
PACKET_TYPE_IPX = $8137;
|
IPX on EII |
PACKET_TYPE_EAPOL = $888E;
|
EAP-over-LAN (EAPOL) |
PACKET_TYPE_RSN = $88C7;
|
RSN pre-authentication |
PACKET_TYPE_TDLS = $890D;
|
Tunneled direct-link setup |
PACKET_TYPE_RAW = $FFFF;
|
IPX on 802.3 |
PACKET_TYPE_LLC = $0001;
|
IPX on 802.2 |
MII_*
MII_BMCR = $00;
|
Basic mode control register |
MII_BMSR = $01;
|
Basic mode status register |
MII_PHYSID1 = $02;
|
PHYS ID 1 |
MII_PHYSID2 = $03;
|
PHYS ID 2 |
MII_ADVERTISE = $04;
|
Advertisement control reg |
MII_LPA = $05;
|
Link partner ability reg |
MII_EXPANSION = $06;
|
Expansion register |
MII_CTRL1000 = $09;
|
1000BASE-T control |
MII_STAT1000 = $0a;
|
1000BASE-T status |
MII_MMD_CTRL = $0d;
|
MMD Access Control Register |
MII_MMD_DATA = $0e;
|
MMD Access Data Register |
MII_ESTATUS = $0f;
|
Extended Status |
MII_DCOUNTER = $12;
|
Disconnect counter |
MII_FCSCOUNTER = $13;
|
False carrier counter |
MII_NWAYTEST = $14;
|
N-way auto-neg test reg |
MII_RERRCOUNTER = $15;
|
Receive error counter |
MII_SREVISION = $16;
|
Silicon revision |
MII_RESV1 = $17;
|
Reserved... |
MII_LBRERROR = $18;
|
Lpback, rx, bypass error |
MII_PHYADDR = $19;
|
PHY address |
MII_RESV2 = $1a;
|
Reserved... |
MII_TPISTATUS = $1b;
|
TPI status for 10mbps |
MII_NCONFIG = $1c;
|
Network interface config |
BMCR_*
BMCR_RESV = $003f;
|
Unused... |
BMCR_SPEED1000 = $0040;
|
MSB of Speed (1000) |
BMCR_CTST = $0080;
|
Collision test |
BMCR_FULLDPLX = $0100;
|
Full duplex |
BMCR_ANRESTART = $0200;
|
Auto negotiation restart |
BMCR_ISOLATE = $0400;
|
Isolate data paths from MII |
BMCR_PDOWN = $0800;
|
Enable low power state |
BMCR_ANENABLE = $1000;
|
Enable auto negotiation |
BMCR_SPEED100 = $2000;
|
Select 100Mbps |
BMCR_LOOPBACK = $4000;
|
TXD loopback bits |
BMCR_RESET = $8000;
|
Reset to default state |
BMSR_*
BMSR_ERCAP = $0001;
|
Ext-reg capability |
BMSR_JCD = $0002;
|
Jabber detected |
BMSR_LSTATUS = $0004;
|
Link status |
BMSR_ANEGCAPABLE = $0008;
|
Able to do auto-negotiation |
BMSR_RFAULT = $0010;
|
Remote fault detected |
BMSR_ANEGCOMPLETE = $0020;
|
Auto-negotiation complete |
BMSR_RESV = $00c0;
|
Unused... |
BMSR_ESTATEN = $0100;
|
Extended Status in R15 |
BMSR_100HALF2 = $0200;
|
Can do 100BASE-T2 HDX |
BMSR_100FULL2 = $0400;
|
Can do 100BASE-T2 FDX |
BMSR_10HALF = $0800;
|
Can do 10mbps, half-duplex |
BMSR_10FULL = $1000;
|
Can do 10mbps, full-duplex |
BMSR_100HALF = $2000;
|
Can do 100mbps, half-duplex |
BMSR_100FULL = $4000;
|
Can do 100mbps, full-duplex |
BMSR_100BASE4 = $8000;
|
Can do 100mbps, 4k packets |
ADVERTISE_*
ADVERTISE_SLCT = $001f;
|
Selector bits |
ADVERTISE_CSMA = $0001;
|
Only selector supported |
ADVERTISE_10HALF = $0020;
|
Try for 10mbps half-duplex |
ADVERTISE_1000XFULL = $0020;
|
Try for 1000BASE-X full-duplex |
ADVERTISE_10FULL = $0040;
|
Try for 10mbps full-duplex |
ADVERTISE_1000XHALF = $0040;
|
Try for 1000BASE-X half-duplex |
ADVERTISE_100HALF = $0080;
|
Try for 100mbps half-duplex |
ADVERTISE_1000XPAUSE = $0080;
|
Try for 1000BASE-X pause |
ADVERTISE_100FULL = $0100;
|
Try for 100mbps full-duplex |
ADVERTISE_1000XPSE_ASYM = $0100;
|
Try for 1000BASE-X asym pause |
ADVERTISE_100BASE4 = $0200;
|
Try for 100mbps 4k packets |
ADVERTISE_PAUSE_CAP = $0400;
|
Try for pause |
ADVERTISE_PAUSE_ASYM = $0800;
|
Try for asymetric pause |
ADVERTISE_RESV = $1000;
|
Unused... |
ADVERTISE_RFAULT = $2000;
|
Say we can detect faults |
ADVERTISE_LPACK = $4000;
|
Ack link partners response |
ADVERTISE_NPAGE = $8000;
|
Next page bit |
ADVERTISE_FULL = ADVERTISE_100FULL or ADVERTISE_10FULL or ADVERTISE_CSMA;
|
|
ADVERTISE_ALL = ADVERTISE_10HALF or ADVERTISE_10FULL or ADVERTISE_100HALF or ADVERTISE_100FULL;
|
LPA_*
LPA_SLCT = $001f;
|
Same as advertise selector |
LPA_10HALF = $0020;
|
Can do 10mbps half-duplex |
LPA_1000XFULL = $0020;
|
Can do 1000BASE-X full-duplex |
LPA_10FULL = $0040;
|
Can do 10mbps full-duplex |
LPA_1000XHALF = $0040;
|
Can do 1000BASE-X half-duplex |
LPA_100HALF = $0080;
|
Can do 100mbps half-duplex |
LPA_1000XPAUSE = $0080;
|
Can do 1000BASE-X pause |
LPA_100FULL = $0100;
|
Can do 100mbps full-duplex |
LPA_1000XPAUSE_ASYM = $0100;
|
Can do 1000BASE-X pause asym |
LPA_100BASE4 = $0200;
|
Can do 100mbps 4k packets |
LPA_PAUSE_CAP = $0400;
|
Can pause |
LPA_PAUSE_ASYM = $0800;
|
Can pause asymetrically |
LPA_RESV = $1000;
|
Unused... |
LPA_RFAULT = $2000;
|
Link partner faulted |
LPA_LPACK = $4000;
|
Link partner acked us |
LPA_NPAGE = $8000;
|
Next page bit |
LPA_DUPLEX = LPA_10FULL or LPA_100FULL;
|
|
LPA_100 = LPA_100FULL or LPA_100HALF or LPA_100BASE4;
|
EXPANSION_*
EXPANSION_NWAY = $0001;
|
Can do N-way auto-nego |
EXPANSION_LCWP = $0002;
|
Got new RX page code word |
EXPANSION_ENABLENPAGE = $0004;
|
This enables npage words |
EXPANSION_NPCAPABLE = $0008;
|
Link partner supports npage |
EXPANSION_MFAULTS = $0010;
|
Multiple faults detected |
EXPANSION_RESV = $ffe0;
|
Unused... |
ESTATUS_*
ESTATUS_1000_TFULL = $2000;
|
Can do 1000BT Full |
ESTATUS_1000_THALF = $1000;
|
Can do 1000BT Half |
NWAYTEST_*
NWAYTEST_RESV1 = $00ff;
|
Unused... |
NWAYTEST_LOOPBACK = $0100;
|
Enable loopback for N-way |
NWAYTEST_RESV2 = $fe00;
|
Unused... |
*_1000*
ADVERTISE_1000FULL = $0200;
|
Advertise 1000BASE-T full duplex |
ADVERTISE_1000HALF = $0100;
|
Advertise 1000BASE-T half duplex |
CTL1000_AS_MASTER = $0800;
|
|
CTL1000_ENABLE_MASTER = $1000;
|
LPA_1000*
LPA_1000MSFAIL = $8000;
|
Master/Slave resolution failure |
LPA_1000LOCALRXOK = $2000;
|
Link partner local receiver status |
LPA_1000REMRXOK = $1000;
|
Link partner remote receiver status |
LPA_1000FULL = $0800;
|
Link partner 1000BASE-T full duplex |
LPA_1000HALF = $0400;
|
Link partner 1000BASE-T half duplex |
FLOW_CTRL_*
FLOW_CTRL_TX = $01;
|
|
FLOW_CTRL_RX = $02;
|
MII_MMD_CTRL_*
MII_MMD_CTRL_DEVAD_MASK = $1f;
|
Mask MMD DEVAD |
MII_MMD_CTRL_ADDR = $0000;
|
Address |
MII_MMD_CTRL_NOINCR = $4000;
|
No post increment |
MII_MMD_CTRL_INCR_RDWT = $8000;
|
Post increment on reads & writes |
MII_MMD_CTRL_INCR_ON_WT = $C000;
|
Post increment on writes only |
PHY_LINK_*
PHY_LINK_DOWN = 0;
|
|
PHY_LINK_UP = 1;
|
|
PHY_LINK_UNKNOWN = -1;
|
PHY_INTERFACE_MODE_*
PHY_INTERFACE_MODE_NONE = 0;
|
|
PHY_INTERFACE_MODE_INTERNAL = 1;
|
|
PHY_INTERFACE_MODE_MII = 2;
|
|
PHY_INTERFACE_MODE_GMII = 3;
|
|
PHY_INTERFACE_MODE_SGMII = 4;
|
|
PHY_INTERFACE_MODE_TBI = 5;
|
|
PHY_INTERFACE_MODE_REVMII = 6;
|
|
PHY_INTERFACE_MODE_RMII = 7;
|
|
PHY_INTERFACE_MODE_RGMII = 8;
|
|
PHY_INTERFACE_MODE_RGMII_ID = 9;
|
|
PHY_INTERFACE_MODE_RGMII_RXID = 10;
|
|
PHY_INTERFACE_MODE_RGMII_TXID = 11;
|
|
PHY_INTERFACE_MODE_RTBI = 12;
|
|
PHY_INTERFACE_MODE_SMII = 13;
|
|
PHY_INTERFACE_MODE_XGMII = 14;
|
|
PHY_INTERFACE_MODE_MOCA = 15;
|
|
PHY_INTERFACE_MODE_QSGMII = 16;
|
|
PHY_INTERFACE_MODE_TRGMII = 17;
|
|
PHY_INTERFACE_MODE_1000BASEX = 18;
|
|
PHY_INTERFACE_MODE_2500BASEX = 19;
|
|
PHY_INTERFACE_MODE_RXAUI = 20;
|
|
PHY_INTERFACE_MODE_XAUI = 21;
|
|
PHY_INTERFACE_MODE_10GKR = 22;
|
10GBASE-KR, XFI, SFI - single lane 10G Serdes |
PHY_INTERFACE_MODE_USXGMII = 23;
|
PHY_SPEED_*
PHY_SPEED_10 = 10;
|
|
PHY_SPEED_100 = 100;
|
|
PHY_SPEED_1000 = 1000;
|
|
PHY_SPEED_UNKNOWN = -1;
|
PHY_DUPLEX_*
PHY_DUPLEX_HALF = 0;
|
|
PHY_DUPLEX_FULL = 1;
|
|
PHY_DUPLEX_UNKNOWN = -1;
|
SERVICE_SET_*
SERVICE_SET_UNKNOWN = 0;
|
|
SERVICE_SET_BSS = 1;
|
Basic Service Set |
SERVICE_SET_ESS = 2;
|
Extended Service Set |
SERVICE_SET_IBSS = 3;
|
Independent Basic Service Set |
SERVICE_SET_MBSS = 4;
|
Mesh Basic Service Set |
NETWORK_LOG_*
NETWORK_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
Network debugging messages |
NETWORK_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
Network informational messages, such as a device being attached or detached |
NETWORK_LOG_LEVEL_WARN = LOG_LEVEL_WARN;
|
Network warning messages |
NETWORK_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
Network error messages |
NETWORK_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No Network messages |
ETHERNET_*
ETHERNET_ADDRESS_SIZE = 6;
|
SizeOf(TEthernetAddress) |
ETHERNET_HEADER_SIZE = 14;
|
SizeOf(TEthernetHeader) |
ETHERNET_VLAN_SIZE = 4;
|
Length of Ethernet VLAN tag |
ETHERNET_CRC_SIZE = 4;
|
Length of Ethernet CRC (FCS) |
ETHERNET_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);
|
|
ETHERNET_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);
|
|
ETHERNET_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);
|
|
ETHERNET_MULTICAST:THardwareAddress = ($01,$00,$5E,$00,$00,$00);
|
ETHERNET_*_SIZE*
ETHERNET_MTU = 1500;
|
|
ETHERNET_MIN_PAYLOAD = 46;
|
|
ETHERNET_MIN_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MIN_PAYLOAD;
|
|
ETHERNET_MAX_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU;
|
|
ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;
|
LLC_HEADER_*
FRAME_TYPE_ETHERNET_8022 | |
LLC_HEADER_SIZE = 3;
|
SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets |
SNAP_HEADER_*
FRAME_TYPE_ETHERNET_SNAP | |
SNAP_HEADER_SIZE = 5;
|
SizeOf(TSNAPHeader); |
Type definitions
Hardware address
PHardwareAddress = ^THardwareAddress;
THardwareAddress = array[0..HARDWARE_ADDRESS_SIZE - 1] of Byte;
Hardware addresses
PHardwareAddresses = ^THardwareAddresses;
THardwareAddresses = array[0..0] of THardwareAddress;
Multicast address
PMulticastAddresses = ^TMulticastAddresses;
TMulticastAddresses = array[0..MAX_MULTICAST_ADDRESS - 1] of THardwareAddress;
Packet fragment
PPacketFragment = ^TPacketFragment;
TPacketFragment = packed record
Size:Integer;
|
|
Data:Pointer;
|
|
Next:PPacketFragment;
|
Adapter statistics
PAdapterStatistics = ^TAdapterStatistics;
TAdapterStatistics = record
PacketsIn:UInt64; | |
PacketsOut:UInt64; | |
BytesIn:UInt64; | |
BytesOut:UInt64; | |
ErrorsIn:UInt64; | |
ErrorsOut:UInt64; | |
PacketsLost:UInt64; |
Network packet
PNetworkPacket = ^TNetworkPacket;
TNetworkPacket = record
Buffer:Pointer;
|
Pointer to buffer (Set by driver that owns this packet) |
Data:Pointer;
|
Start of data within buffer (Set by driver that owns this packet) |
Length:LongInt;
|
Length of packet data (Set by driver on Receive/Set by caller on Transmit, contains maximum length on Allocate) |
Flags:LongWord;
|
Packet specific flags (eg Error, Broadcast etc) (Dependent on network type) |
Network Buffer
PNetworkBuffer = ^TNetworkBuffer;
TNetworkBuffer = record
Wait:TSemaphoreHandle;
|
Packet ready semaphore |
Start:LongWord;
|
Index of first packet ready |
Count:LongWord;
|
Number of packets ready in buffer |
Packets:array[0..(NETWORK_BUFFER_SIZE - 1)] of PNetworkPacket;
|
Network entry
PNetworkEntry = ^TNetworkEntry;
TNetworkEntry = record
Buffer:Pointer;
|
Pointer to buffer (Allocated by driver that owns this entry) |
Size:LongWord;
|
Size of the buffer (Total size, usable size is Size minus Offset) |
Offset:LongWord;
|
Offset to start of data (Data for first packet will be at Buffer plus Offset, must be less than size) |
Count:LongWord;
|
Number of packets in the entry (Set by driver that owns this entry, must be at least one) |
DriverData:Pointer;
|
Driver private data (Managed by driver that owns this entry) |
Packets:array of TNetworkPacket; {Array of 0 to Count - 1 packets in this entry
|
Allocated by driver that owns this entry, must be at least one) |
Network queue
PNetworkQueue = ^TNetworkQueue;
TNetworkQueue = record
Buffer:TBufferHandle;
|
Handle for entry buffers |
Wait:TSemaphoreHandle;
|
Entry ready semaphore |
Start:LongWord;
|
Index of first entry ready |
Count:LongWord;
|
Number of entries ready in queue |
Flags:LongWord;
|
Queue specific flags (eg Paused, Halted etc) (Managed by driver) |
Entries:array of PNetworkEntry;
|
Array of 0 to Total - 1 entries in this queue (Allocated by driver that owns this queue) |
Network statistics
PNetworkStatistics = ^TNetworkStatistics;
TNetworkStatistics = record
Note: Returned by NETWORK_CONTROL_GET_STATS) | |
ReceiveBytes:UInt64;
|
|
ReceiveCount:UInt64;
|
|
ReceiveErrors:UInt64;
|
|
TransmitBytes:UInt64;
|
|
TransmitCount:UInt64;
|
|
TransmitErrors:UInt64;
|
|
StatusCount:UInt64;
|
|
StatusErrors:UInt64;
|
|
BufferOverruns:UInt64;
|
|
BufferUnavailable:UInt64;
|
Network enumeration callback
TNetworkEnumerate = function(Network:PNetworkDevice; Data:Pointer):LongWord;
|
Network notification callback
TNetworkNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
|
Network device open
TNetworkDeviceOpen = function(Network:PNetworkDevice):LongWord;
|
Network device close
TNetworkDeviceClose = function(Network:PNetworkDevice):LongWord;
|
Network device read
TNetworkDeviceRead = function(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
|
Network device write
TNetworkDeviceWrite = function(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
|
Network device control
TNetworkDeviceControl = function(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
|
Network buffer allocate
TNetworkBufferAllocate = function(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
|
Network buffer release
TNetworkBufferRelease = function(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
|
Network buffer receive
TNetworkBufferReceive = function(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
|
Network buffer transmit
TNetworkBufferTransmit = function(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
|
Network device
PNetworkDevice = ^TNetworkDevice;
TNetworkDevice = record
Device Properties | |
Device:TDevice;
|
The Device entry for this Network |
Network Properties | |
NetworkId:LongWord;
|
Unique Id of this Network in the Network table |
NetworkState:LongWord;
|
Network state (eg NETWORK_STATE_OPEN) |
NetworkStatus:LongWord;
|
Network status (eg NETWORK_STATUS_UP) |
DeviceOpen:TNetworkDeviceOpen;
|
A Device specific DeviceOpen method implementing a standard Network device interface |
DeviceClose:TNetworkDeviceClose;
|
A Device specific DeviceClose method implementing a standard Network device interface |
DeviceRead:TNetworkDeviceRead;
|
A Device specific DeviceRead method implementing a standard Network device interface |
DeviceWrite:TNetworkDeviceWrite;
|
A Device specific DeviceWrite method implementing a standard Network device interface |
DeviceControl:TNetworkDeviceControl;
|
A Device specific DeviceControl method implementing a standard Network device interface |
BufferAllocate:TNetworkBufferAllocate;
|
A Device specific BufferAllocate method implementing a standard Network device interface |
BufferRelease:TNetworkBufferRelease;
|
A Device specific BufferRelease method implementing a standard Network device interface |
BufferReceive:TNetworkBufferReceive;
|
A Device specific BufferReceive method implementing a standard Network device interface |
BufferTransmit:TNetworkBufferTransmit;
|
A Device specific BufferTransmit method implementing a standard Network device interface |
Driver Properties | |
Lock:TMutexHandle;
|
Network lock |
Buffer:TNetworkBuffer;
|
Network receive buffer |
TransmitWait:TSemaphoreHandle;
|
Transmit complete semaphore |
ReceiveBuffer:TBufferHandle;
|
Buffer for receive packets |
TransmitBuffer:TBufferHandle;
|
Buffer for transmit packets |
ReceiveQueue:TNetworkQueue;
|
Queue for receive packets |
TransmitQueue:TNetworkQueue;
|
Queue for transmit packets (If applicable) |
Statistics Properties | |
ReceiveBytes:UInt64;
|
|
ReceiveCount:UInt64;
|
|
ReceiveErrors:UInt64;
|
|
TransmitBytes:UInt64;
|
|
TransmitCount:UInt64;
|
|
TransmitErrors:UInt64;
|
|
StatusCount:UInt64;
|
|
StatusErrors:UInt64;
|
|
BufferOverruns:UInt64;
|
|
BufferUnavailable:UInt64;
|
|
Internal Properties | |
Prev:PNetworkDevice;
|
Previous entry in Network table |
Next:PNetworkDevice;
|
Next entry in Network table |
Network event callback
TNetworkEventCallback = function(Data:Pointer; Event:LongWord):LongWord;
|
Network Event
PNetworkEvent = ^TNetworkEvent;
TNetworkEvent = record
Event Properties | |
Signature:LongWord;
|
Signature for entry validation |
EventState:LongWord;
|
Event state (eg Registered/Unregistered) |
EventFlags:LongWord;
|
Event flags (eg NETWORK_EVENT_FLAG_NONE) |
Callback:TNetworkEventCallback;
|
The callback for network events |
Data:Pointer;
|
A pointer to callback specific data to be passed with events (Optional) |
Event:LongWord;
|
The mask of events to notify on (eg NETWORK_EVENT_SYSTEM_START etc) |
Internal Properties | |
Prev:PNetworkEvent;
|
Previous entry in Event table |
Next:PNetworkEvent;
|
Next entry in Event table |
Ethernet address
PEthernetAddress = ^TEthernetAddress;
TEthernetAddress = array[0..ETHERNET_ADDRESS_SIZE - 1] of Byte;
Ethernet header
PEthernetHeader = ^TEthernetHeader;
TEthernetHeader = packed record
DestAddress:THardwareAddress;
|
|
SourceAddress:THardwareAddress;
|
|
TypeLength:Word;
|
Length or Type (IEEE 802.3 or BlueBook/DIX Ethernet) |
Data:array[0..0] of Byte;
|
Not part of header, included to provide a pointer to the start of data |
Ethernet 802.3 network
PLLCHeader = ^TLLCHeader;
TLLCHeader = packed record
Note: FRAME_TYPE_ETHERNET_8022 | |
DSAP:Byte;
|
|
SSAP:Byte;
|
|
Control:Byte;
|
|
Information:array[0..0] of Byte;
|
Optional (Control byte can be 1 or 2 octets) |
Ethernet SNAP network
PSNAPHeader = ^TSNAPHeader;
TSNAPHeader = packed record
Note: FRAME_TYPE_ETHERNET_SNAP | |
OUI:array[0..2] of Byte;
|
|
ProtocolID:Word;
|
|
Data:array[0..0] of Byte;
|
Not part of header, included to provide a pointer to the start of data |
Adapter callback
TAdapterCallback = function(AAdapter:TNetworkAdapter):Boolean of object;
|
Adapter packet handler
TAdapterPacketHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;
|
Adapter monitor handler
TAdapterMonitorHandler = function(AHandle:THandle; APacket:Pointer; ASize:Integer; AStatus:Pointer):Boolean of object;
|
Adapter authenticator handler
TAdapterAuthenticatorHandler = function(AHandle:THandle; ACommand:Word):Boolean of object;
|
Class definitions
Network specific classes
TAdapterManager = class(TObject)
|
TAdapterTransport = class(TListObject)
|
TAdapterBinding = class(TListObject)
|
TAdapterMonitor = class(TListObject)
|
TAdapterAuthenticator = class(TListObject)
|
TNetworkList = class(TLinkedObjList)
|
TNetworkAdapter = class(TListObject)
|
TAdapterThread = class(TThread)
|
TAdapterBuffer = class(TObject)
|
TWiredAdapter = class(TNetworkAdapter)
|
TNetworkSetting = class(TListObject)
|
TNetworkSettings = class(TObject)
|
TServiceSet = class(TListObject)
|
Public variables
Network logging
NETWORK_DEFAULT_LOG_LEVEL:LongWord = NETWORK_LOG_LEVEL_DEBUG;
|
Minimum level for Network messages. Only messages with level greater than or equal to this will be printed. |
NETWORK_LOG_ENABLED:Boolean;
|
Network specific variables
AdapterManager:TAdapterManager;
|
NetworkSettings:TNetworkSettings;
|
Function declarations
Initialization functions
procedure NetworkInit;
Note | To be documented |
---|
function NetworkStart:LongWord;
Note | None documented |
---|
function NetworkStop:LongWord;
Note | None documented |
---|
function NetworkStartCompleted:Boolean;
Return | Returns True if the network sub system has been started |
---|
Network functions
function NetworkDeviceOpen(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceClose(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceRead(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Note | None documented |
---|
function NetworkDeviceWrite(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Note | None documented |
---|
function NetworkDeviceControl(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Note | None documented |
---|
function NetworkBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkBufferRelease(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkBufferReceive(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkBufferTransmit(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkDeviceSetState(Network:PNetworkDevice; State:LongWord):LongWord;
Network | The network to set the state for |
---|---|
State | The new state to set and notify |
Return | ERROR_SUCCESS if completed or another error code on failure |
function NetworkDeviceSetStatus(Network:PNetworkDevice; Status:LongWord):LongWord;
Network | The network to set the status for |
---|---|
Status | The new status to set and notify |
Return | ERROR_SUCCESS if completed or another error code on failure |
function NetworkDeviceCreate:PNetworkDevice;
Return | Pointer to new Network entry or nil if network could not be created |
---|
function NetworkDeviceCreateEx(Size:LongWord):PNetworkDevice;
Size | Size in bytes to allocate for new network (Including the network entry) |
---|---|
Return | Pointer to new Network entry or nil if network could not be created |
function NetworkDeviceDestroy(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceRegister(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceDeregister(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceFind(NetworkId:LongWord):PNetworkDevice;
Note | None documented |
---|
function NetworkDeviceFindByName(const Name:String):PNetworkDevice; inline;
Note | None documented |
---|
function NetworkDeviceFindByDescription(const Description:String):PNetworkDevice; inline;
Note | None documented |
---|
function NetworkDeviceEnumerate(Callback:TNetworkEnumerate; Data:Pointer):LongWord;
Note | None documented |
---|
function NetworkDeviceNotification(Network:PNetworkDevice; Callback:TNetworkNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Note | None documented |
---|
function NetworkEventAllocate(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):PNetworkEvent;
Note | None documented |
---|
function NetworkEventRelease(Event:PNetworkEvent):LongWord;
Note | None documented |
---|
function NetworkEventRegister(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):THandle;
Note | None documented |
---|
function NetworkEventDeregister(Handle:THandle):LongWord;
Note | None documented |
---|
function NetworkEventNotify(Event:LongWord):LongWord;
Note | None documented |
---|
RTL network functions
function SysHostGetName:String;
Note | None documented |
---|
function SysHostSetName(const AName:String):Boolean;
Note | None documented |
---|
function SysHostGetDomain:String;
Note | None documented |
---|
function SysHostSetDomain(const ADomain:String):Boolean;
Note | None documented |
---|
Network helper functions
function NetworkGetLastError:LongInt;
Return | Last Network Error or ERROR_SUCCESS if no error |
---|
procedure NetworkSetLastError(Error:LongInt);
Note | None documented |
---|
function NetworkGetCount:LongWord;
Note | None documented |
---|
function NetworkDeviceCheck(Network:PNetworkDevice):PNetworkDevice;
Note | None documented |
---|
function NetworkDeviceTypeToString(NetworkType:LongWord):String;
Note | None documented |
---|
function NetworkDeviceStateToString(NetworkState:LongWord):String;
Note | None documented |
---|
function NetworkDeviceStatusToString(NetworkStatus:LongWord):String;
Note | None documented |
---|
function NetworkDeviceStateToNotification(State:LongWord):LongWord;
Note | None documented |
---|
function NetworkDeviceStatusToNotification(Status:LongWord):LongWord;
Note | None documented |
---|
function NetworkEventCheck(Event:PNetworkEvent):PNetworkEvent;
Note | None documented |
---|
procedure NetworkLog(Level:LongWord; Network:PNetworkDevice; const AText:String);
Note | None documented |
---|
procedure NetworkLogInfo(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
procedure NetworkLogWarn(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
procedure NetworkLogError(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
procedure NetworkLogDebug(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
function HardwareAddressToString(const AAddress:THardwareAddress; const ASeparator: String = ''):String;
Note | None documented |
---|
function StringToHardwareAddress(const AAddress:String):THardwareAddress;
Note | None documented |
---|
function ValidHardwareAddress(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function RandomHardwareAddress:THardwareAddress;
Note | None documented |
---|
function CompareHardwareAddress(const AAddress1,AAddress2:THardwareAddress):Boolean;
Note | None documented |
---|
function CompareHardwareDefault(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function CompareHardwareBroadcast(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function CompareHardwareMulticast(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function AdapterTypeToString(AType:Word):String;
Note | None documented |
---|
function AdapterModeToString(AMode:Word):String;
Note | None documented |
---|
function AdapterConfigToString(AConfig:Word):String;
Note | None documented |
---|
function AdapterStateToString(AState:Integer):String;
Note | None documented |
---|
function AdapterStatusToString(AStatus:Integer):String;
Note | None documented |
---|
function FrameTypeToString(AType:Word):String;
Note | None documented |
---|
function MediaTypeToString(AType:Word):String;
Note | None documented |
---|
function PacketTypeToString(AType:Word):String;
Note | None documented |
---|
function ConfigTypeToString(AType:Word):String;
Note | None documented |
---|
function ConfigCommandToString(ACommand:Word):String;
Note | None documented |
---|
function AuthTypeToString(AType:Word):String;
Note | None documented |
---|
function AuthCommandToString(ACommand:Word):String;
Note | None documented |
---|
Return to Unit Reference