Difference between revisions of "Unit Network"

From Ultibo.org
Jump to: navigation, search
 
(41 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
''To be documented''
+
'''Ultibo Network Interface unit'''
  
 
=== Constants ===
 
=== Constants ===
Line 18: Line 18:
 
| <code>NETWORK_NAME_PREFIX = 'Network';</code>
 
| <code>NETWORK_NAME_PREFIX = 'Network';</code>
 
| Name prefix for Network Devices
 
| Name prefix for Network Devices
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|Generic Network
 +
|-
 +
| <code>HARDWARE_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>HARDWARE_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);</code>
 +
| &nbsp;
 +
|-
 +
| <code>HARDWARE_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
 
</div></div>
 
</div></div>
<br />  
+
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 48: Line 61:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_STATE_* </code></div>
+
<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;">
 
<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;"
Line 73: Line 86:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_STATUS_* </code></div>
+
<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;">
 
<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;"
Line 92: Line 105:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_FLAG_* </code></div>
+
<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;">
 
<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;"
Line 104: Line 117:
 
| <code>NETWORK_FLAG_TX_BUFFER = $00000002;</code>
 
| <code>NETWORK_FLAG_TX_BUFFER = $00000002;</code>
 
| Device supports Transmit Buffer (NetworkBufferAllocate/NetworkBufferTransmit)
 
| 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
 
|-
 
|-
 
|}
 
|}
Line 109: Line 128:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_CONTROL_* </code></div>
+
<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;">
 
<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;"
Line 139: Line 158:
 
| <code>NETWORK_CONTROL_GET_HEADERLEN = 10;</code>
 
| <code>NETWORK_CONTROL_GET_HEADERLEN = 10;</code>
 
| Get Header length for this device
 
| 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%;"|&nbsp;
 +
|-
 +
| <code>NETWORK_LINK_UP = NETWORK_STATUS_UP;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
|-
 +
| <code>NETWORK_SPEED_10 = 10;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NETWORK_SPEED_100 = 100;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NETWORK_SPEED_1000 = 1000;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
|-
 +
| <code>NETWORK_DUPLEX_HALF = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NETWORK_DUPLEX_FULL = 2;</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
Line 144: Line 238:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_LOCK_* </code></div>
+
<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;">
 
<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;"
Line 161: Line 255:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_BUFFER_* </code></div>
+
<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;">
 
<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;"
Line 172: Line 266:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code>  NETWORK_EVENT_* </code></div>
+
<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;">
 
<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;"
Line 207: Line 301:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_EVENT_SIGNATURE* </code></div>
+
<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;">
 
<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;"
Line 218: Line 312:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_EVENT_STATE_* </code></div>
+
<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;">
 
<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;"
Line 232: Line 326:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_EVENT_FLAG_* </code></div>
+
<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;">
 
<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;"
Line 243: Line 337:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> ADAPTER_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 257: Line 351:
 
|-
 
|-
 
| <code>ADAPTER_TYPE_WIRELESS = 3;</code>
 
| <code>ADAPTER_TYPE_WIRELESS = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ADAPTER_TYPE_SLIP = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ADAPTER_TYPE_PPP = 5;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 263: Line 363:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> ADAPTER_THREAD_* </code></div>
+
<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;">
 
<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;"
Line 277: Line 377:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> ADAPTER_STATE_* </code></div>
+
<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;">
 
<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;"
Line 291: Line 391:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> ADAPTER_STATUS_* </code></div>
+
<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;">
 
<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;"
Line 305: Line 405:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> CONFIG_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 328: Line 428:
 
|-
 
|-
 
| <code>CONFIG_TYPE_LOOPBACK = 6;</code>
 
| <code>CONFIG_TYPE_LOOPBACK = 6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CONFIG_TYPE_SLIP = 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CONFIG_TYPE_PPP = 8;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 339: Line 445:
 
<br />   
 
<br />   
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> AUTH_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 356: Line 462:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> FRAME_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 413: Line 519:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> CONFIG_* </code></div>
+
<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;">
 
<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;"
Line 453: Line 559:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> AUTH_COMMAND_* </code></div>
+
<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;">
 
<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;"
Line 473: Line 579:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> MAX_MULTICAST_* </code></div>
+
<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;">
 
<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;"
Line 489: Line 595:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> HARDWARE_ADDRESS_* </code></div>
+
<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;">
 
<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;"
Line 500: Line 606:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> MEDIA_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 510: Line 616:
 
|-
 
|-
 
| <code>MEDIA_TYPE_ETHERNET = $0001;</code>
 
| <code>MEDIA_TYPE_ETHERNET = $0001;</code>
| ARP type of Ethernet Hardware (These values must not change, they are the actual values used by ARP packets)
+
| 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>
 
| <code>MEDIA_TYPE_TOKENRING = $0006;</code>
| ARP type of Token-Ring Hardware (These values must not change, they are the actual values used by ARP packets)
+
| 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>
 +
| &nbsp;
 +
|-
 +
| <code>MEDIA_TYPE_LOOPBACK = $1001;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MEDIA_TYPE_PPP = $1002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MEDIA_TYPE_SLIP = $1003;</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
Line 519: Line 637:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> PACKET_TYPE_* </code></div>
+
<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;">
 
<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;"
Line 569: Line 687:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 network constants''' <code> *_ETHERNET_PACKET </code></div>
+
<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;">
 
<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;"
 
|-
 
|-
| <code>MIN_ETHERNET_PACKET = 60;</code>
+
| <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"|&nbsp;
 +
|-
 +
| <code>ADVERTISE_FULL = ADVERTISE_100FULL or ADVERTISE_10FULL or ADVERTISE_CSMA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ADVERTISE_ALL = ADVERTISE_10HALF or ADVERTISE_10FULL or ADVERTISE_100HALF or ADVERTISE_100FULL;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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"|&nbsp;
 +
|-
 +
| <code>LPA_DUPLEX = LPA_10FULL or LPA_100FULL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LPA_100 = LPA_100FULL or LPA_100HALF or LPA_100BASE4;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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>
 +
| &nbsp;
 +
|-
 +
| <code>CTL1000_ENABLE_MASTER = $1000;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>MAX_ETHERNET_PACKET = 1514;</code>
+
| <code>FLOW_CTRL_RX = $02;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|}
 
|}
 
</div></div>
 
</div></div>
<br />  
+
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants ''' <code> LLC_HEADER_* </code></div>
+
<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;">
 
<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;"
 
|-
 
|-
|colspan="2"|FRAME_TYPE_ETHERNET_8022
+
| <code>MII_MMD_CTRL_DEVAD_MASK = $1f;</code>
 +
| Mask MMD DEVAD
 
|-
 
|-
| <code>LLC_HEADER_SIZE = 3;</code>
+
| <code>MII_MMD_CTRL_ADDR = $0000;</code>
| SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets
+
| 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
 
|-
 
|-
 
|}
 
|}
Line 596: Line 1,126:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants ''' <code> SNAP_HEADER_* </code></div>
+
<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;">
 
<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;"
 
|-
 
|-
|colspan="2"|FRAME_TYPE_ETHERNET_SNAP
+
| <code>PHY_LINK_DOWN = 0;</code>
 +
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>SNAP_HEADER_SIZE = 5;</code>
+
| <code>PHY_LINK_UP = 1;</code>
| SizeOf(TSNAPHeader);
+
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>PHY_LINK_UNKNOWN = -1;</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
 
</div></div>
 
</div></div>
 
<br />
 
<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%;"|&nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_INTERNAL = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_MII = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_GMII = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_SGMII = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_TBI = 5;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_REVMII = 6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RMII = 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RGMII = 8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RGMII_ID = 9;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RGMII_RXID = 10;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RGMII_TXID = 11;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RTBI = 12;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_SMII = 13;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_XGMII = 14;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_MOCA = 15;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_QSGMII = 16;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_TRGMII = 17;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_1000BASEX = 18;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_2500BASEX = 19;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_RXAUI = 20;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_XAUI = 21;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_INTERFACE_MODE_10GKR = 22;</code>
 +
| 10GBASE-KR, XFI, SFI - single lane 10G Serdes
 +
|-
 +
| <code>PHY_INTERFACE_MODE_USXGMII = 23;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> SERVICE_SET_* </code></div>
+
<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%;"|&nbsp;
 +
|-
 +
| <code>PHY_SPEED_100 = 100;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PHY_SPEED_1000 = 1000;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>PHY_SPEED_UNKNOWN = -1;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
|-
 +
| <code>PHY_DUPLEX_FULL = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>PHY_DUPLEX_UNKNOWN = -1;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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;">
 
<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;"
Line 632: Line 1,289:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 constants''' <code> NETWORK_LOG_* </code></div>
+
<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;">
 
<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;"
Line 641: Line 1,298:
 
| <code>NETWORK_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code>
 
| <code>NETWORK_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code>
 
| Network informational messages, such as a device being attached or detached
 
| 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>
 
| <code>NETWORK_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code>
Line 660: Line 1,320:
 
|-
 
|-
 
| <code>ETHERNET_HEADER_SIZE = 14;</code>
 
| <code>ETHERNET_HEADER_SIZE = 14;</code>
| SizeOf(TEthernetHeader);
+
| SizeOf(TEthernetHeader)
 
|-
 
|-
 
| <code>ETHERNET_VLAN_SIZE = 4;</code>
 
| <code>ETHERNET_VLAN_SIZE = 4;</code>
Line 666: Line 1,326:
 
|-
 
|-
 
| <code>ETHERNET_CRC_SIZE = 4;</code>
 
| <code>ETHERNET_CRC_SIZE = 4;</code>
| Length of Ethernet CRC
+
| Length of Ethernet CRC (FCS)
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ETHERNET_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ETHERNET_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ETHERNET_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ETHERNET_MULTICAST:THardwareAddress = ($01,$00,$5E,$00,$00,$00);</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
Line 672: Line 1,346:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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 size constants''' <code> ETHERNET_*_SIZE* </code></div>
+
<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;">
 
<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;"
Line 678: Line 1,352:
 
| <code>ETHERNET_MTU = 1500;</code>
 
| <code>ETHERNET_MTU = 1500;</code>
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ETHERNET_MIN_PAYLOAD = 46;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ETHERNET_MIN_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MIN_PAYLOAD;</code>
 +
| &nbsp;
 
|-
 
|-
 
| <code>ETHERNET_MAX_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU;</code>
 
| <code>ETHERNET_MAX_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU;</code>
Line 691: Line 1,371:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<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'''</div>
+
<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;">
 
<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;"
 
|-
 
|-
|colspan="2"|Generic Network
+
|colspan="2"|FRAME_TYPE_ETHERNET_8022
 
|-
 
|-
| <code>HARDWARE_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);</code>
+
| <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 ===
 +
----
 +
 
 +
 
 +
'''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;"
 +
|-
 +
| &nbsp;
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>HARDWARE_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);</code>
+
|}
 +
</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;"
 +
|-
 
| &nbsp;
 
| &nbsp;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</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;"
 
|-
 
|-
| <code>HARDWARE_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);</code>
+
| &nbsp;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
|-
 +
| <code>Data:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Next:PPacketFragment;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|}
 
|}
 
</div></div>
 
</div></div>
<br />
+
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
+
'''Adapter statistics'''
<div style="font-size: 14px; padding-left: 12px;">'''Ethernet specific constants'''</div>
+
 
 +
<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;">
 
<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;"
 
|-
 
|-
| <code>ETHERNET_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);</code>
+
| PacketsIn:UInt64;
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>ETHERNET_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);</code>
+
| PacketsOut:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| BytesIn:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| BytesOut:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| ErrorsIn:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| ErrorsOut:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| PacketsLost:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</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>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ETHERNET_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);</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%;"|&nbsp;
 +
|-
 +
| <code>ReceiveCount:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ETHERNET_MULTICAST:THardwareAddress = ($01,$00,$5E,$00,$00,$00);</code>
+
| <code>ReceiveErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransmitBytes:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransmitCount:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransmitErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>StatusCount:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>StatusErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BufferOverruns:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BufferUnavailable:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
 
|}
 
|}
 
</div></div>
 
</div></div>
<br />
 
  
=== Type definitions ===
+
'''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"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>ReceiveCount:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ReceiveErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransmitBytes:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransmitCount:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransmitErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>StatusCount:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>StatusErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BufferOverruns:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BufferUnavailable:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
|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;"
 +
|-
 +
| &nbsp;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</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>
 +
| &nbsp;
 +
|-
 +
| <code>SourceAddress:THardwareAddress;</code>
 +
| &nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>SSAP:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Control:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>ProtocolID:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <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 ===
 
----
 
----
  
''To be documented''
+
 
 +
'''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 ===
 
----
 
----
  
''To be documented''
+
 
 +
'''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 751: Line 2,164:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| To be documented
 
| To be documented
 
|-
 
|-
Line 763: Line 2,176:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 775: Line 2,188:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 787: Line 2,200:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! Return
 
| Returns True if the network sub system has been started
 
| Returns True if the network sub system has been started
 
|-
 
|-
Line 802: Line 2,215:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 814: Line 2,227:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 826: Line 2,239:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 838: Line 2,251:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 850: Line 2,263:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 858: 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 offfset 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 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'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 874: Line 2,287:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 886: Line 2,299:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 898: Line 2,311:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 910: Line 2,323:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Network'''
+
! Network
 
| The network to set the state for
 
| The network to set the state for
 
|-
 
|-
! '''State'''
+
! State
 
| The new state to set and notify
 
| The new state to set and notify
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 928: Line 2,341:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Network'''
+
! Network
 
| The network to set the status for
 
| The network to set the status for
 
|-
 
|-
! '''Status'''
+
! Status
 
| The new status to set and notify
 
| The new status to set and notify
 
|-
 
|-
! '''Return'''
+
! Return
 
| ERROR_SUCCESS if completed or another error code on failure
 
| ERROR_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 946: Line 2,359:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Return'''
+
! 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 958: Line 2,371:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Size'''
+
! 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'''
+
! 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 973: Line 2,386:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 985: Line 2,398:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 997: Line 2,410:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,009: Line 2,422:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,021: Line 2,434:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,033: Line 2,446:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,045: Line 2,458:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,057: Line 2,470:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,069: Line 2,482:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,077: 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 a Event from the Event table</div>
+
<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'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,093: Line 2,506:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,105: Line 2,518:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,117: Line 2,530:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,132: Line 2,545:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,144: Line 2,557:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,156: Line 2,569:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,168: Line 2,581:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,178: 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; inline;</pre>
+
<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'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,195: Line 2,632:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,207: Line 2,644:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,219: Line 2,656:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,231: Line 2,668:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,243: Line 2,680:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,255: Line 2,692:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,267: Line 2,704:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,279: Line 2,716:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,286: 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'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,298: 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 NetworkLogError(Network:PNetworkDevice; const AText:String);</pre>
+
<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'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,310: 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 NetworkLogDebug(Network:PNetworkDevice; const AText:String);</pre>
+
<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'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,322: 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;">function HardwareAddressToString(const AAddress:THardwareAddress):String;</pre>
+
<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'''
+
! 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 1,339: 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 1,351: Line 2,824:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,363: Line 2,836:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,375: Line 2,848:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,387: Line 2,860:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,399: Line 2,872:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,411: Line 2,884:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,423: Line 2,896:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,435: Line 2,908:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,447: Line 2,920:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,459: Line 2,932:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,471: Line 2,944:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,478: 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 PacketTypetoString(AType:Word):String;</pre>
+
<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'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,495: Line 2,968:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,507: Line 2,980:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,519: Line 2,992:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,531: Line 3,004:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Latest revision as of 04:46, 10 October 2023

Return to Unit Reference


Description


Ultibo Network Interface unit

Constants



[Expand]
Network specific constants NETWORK_*


[Expand]
Network device type NETWORK_TYPE_*


[Expand]
Network device state NETWORK_STATE_*


[Expand]
Network device status NETWORK_STATUS_*


[Expand]
Network device flag NETWORK_FLAG_*


[Expand]
Network device control code NETWORK_CONTROL_*


[Expand]
Network link state NETWORK_LINK_*


[Expand]
Network speed state NETWORK_SPEED_*


[Expand]
Network duplex state NETWORK_DUPLEX_*


[Expand]
Network lock state NETWORK_LOCK_*


[Expand]
Network buffer size NETWORK_BUFFER_*


[Expand]
Network event NETWORK_EVENT_*


[Expand]
Network event signature NETWORK_EVENT_SIGNATURE*


[Expand]
Network event state NETWORK_EVENT_STATE_*


[Expand]
Network event flag NETWORK_EVENT_FLAG_*


[Expand]
Adapter type ADAPTER_TYPE_*


[Expand]
Adapter thread ADAPTER_THREAD_*


[Expand]
Adapter state ADAPTER_STATE_*


[Expand]
Adapter status ADAPTER_STATUS_*


[Expand]
Configuration type CONFIG_TYPE_*


[Expand]
Authentication type AUTH_TYPE_*


[Expand]
Frame type FRAME_TYPE_*


[Expand]
Configuration command CONFIG_*


[Expand]
Authentication command AUTH_COMMAND_*


[Expand]
Multicast addressing MAX_MULTICAST_*


[Expand]
Hardware addressing HARDWARE_ADDRESS_*


[Expand]
Media type MEDIA_TYPE_*


[Expand]
Packet type PACKET_TYPE_*


[Expand]
Generic MII registers (Management Interface) MII_*


[Expand]
Basic mode control register BMCR_*


[Expand]
Basic mode status register BMSR_*


[Expand]
Advertisement control register ADVERTISE_*


[Expand]
Link partner ability register LPA_*


[Expand]
Expansion register for auto-negotiation EXPANSION_*


[Expand]
Estatus register ESTATUS_*


[Expand]
N-way test register NWAYTEST_*


[Expand]
1000BASE-T control register *_1000*


[Expand]
1000BASE-T Status register LPA_1000*


[Expand]
Flow control flags FLOW_CTRL_*


[Expand]
MMD access control register fields MII_MMD_CTRL_*


[Expand]
PHY link state PHY_LINK_*


[Expand]
PHY interface mode PHY_INTERFACE_MODE_*


[Expand]
PHY link speed PHY_SPEED_*


[Expand]
PHY duplex mode PHY_DUPLEX_*


[Expand]
Service set SERVICE_SET_*


[Expand]
Network logging NETWORK_LOG_*


[Expand]
Ethernet specific constants ETHERNET_*


[Expand]
Ethernet size ETHERNET_*_SIZE*


[Expand]
Ethernet 802.3 network LLC_HEADER_*


[Expand]
Ethernet SNAP network SNAP_HEADER_*


Type definitions



Hardware address

[Expand]

PHardwareAddress = ^THardwareAddress;

THardwareAddress = array[0..HARDWARE_ADDRESS_SIZE - 1] of Byte;

Hardware addresses

[Expand]

PHardwareAddresses = ^THardwareAddresses;

THardwareAddresses = array[0..0] of THardwareAddress;

Multicast address

[Expand]

PMulticastAddresses = ^TMulticastAddresses;

TMulticastAddresses = array[0..MAX_MULTICAST_ADDRESS - 1] of THardwareAddress;

Packet fragment

[Expand]

PPacketFragment = ^TPacketFragment;

TPacketFragment = packed record

Adapter statistics

[Expand]

PAdapterStatistics = ^TAdapterStatistics;

TAdapterStatistics = record

Network packet

[Expand]

PNetworkPacket = ^TNetworkPacket;

TNetworkPacket = record

Network Buffer

[Expand]

PNetworkBuffer = ^TNetworkBuffer;

TNetworkBuffer = record

Network entry

[Expand]

PNetworkEntry = ^TNetworkEntry;

TNetworkEntry = record

Network queue

[Expand]

PNetworkQueue = ^TNetworkQueue;

TNetworkQueue = record

Network statistics

[Expand]

PNetworkStatistics = ^TNetworkStatistics;

TNetworkStatistics = record

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

[Expand]

PNetworkDevice = ^TNetworkDevice;

TNetworkDevice = record

Network event callback

TNetworkEventCallback = function(Data:Pointer; Event:LongWord):LongWord;

Network Event

[Expand]

PNetworkEvent = ^TNetworkEvent;

TNetworkEvent = record

Ethernet address

[Expand]

PEthernetAddress = ^TEthernetAddress;

TEthernetAddress = array[0..ETHERNET_ADDRESS_SIZE - 1] of Byte;

Ethernet header

[Expand]

PEthernetHeader = ^TEthernetHeader;

TEthernetHeader = packed record

Ethernet 802.3 network

[Expand]

PLLCHeader = ^TLLCHeader;

TLLCHeader = packed record

Ethernet SNAP network

[Expand]

PSNAPHeader = ^TSNAPHeader;

TSNAPHeader = packed record

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

[Expand]
procedure NetworkInit;
Description: To be documented


[Expand]
function NetworkStart:LongWord;
Description: To be documented


[Expand]
function NetworkStop:LongWord;
Description: To be documented


[Expand]
function NetworkStartCompleted:Boolean;
Description: To be documented


Network functions

[Expand]
function NetworkDeviceOpen(Network:PNetworkDevice):LongWord;
Description: To be documented


[Expand]
function NetworkDeviceClose(Network:PNetworkDevice):LongWord;
Description: To be documented


[Expand]
function NetworkDeviceRead(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Description: To be documented


[Expand]
function NetworkDeviceWrite(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Description: To be documented


[Expand]
function NetworkDeviceControl(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Description: To be documented


[Expand]
function NetworkBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
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.


[Expand]
function NetworkBufferRelease(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Description: Release a receive buffer to the specified network device, the entry must have been returned from NetworkBufferReceive


[Expand]
function NetworkBufferReceive(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Description: Receive a completed receive buffer from the specified network device. The returned entry will contain a one or more packets of data to read from. When the data has been processed pass the returned buffer to NetworkBufferRelease.


[Expand]
function NetworkBufferTransmit(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Description: Transmit a completed transmit buffer to the specified network device. The entry must have been allocated using NetworkBufferAllocate.


[Expand]
function NetworkDeviceSetState(Network:PNetworkDevice; State:LongWord):LongWord;
Description: Set the state of the specified network and send a notification


[Expand]
function NetworkDeviceSetStatus(Network:PNetworkDevice; Status:LongWord):LongWord;
Description: Set the status of the specified network and send a notification


[Expand]
function NetworkDeviceCreate:PNetworkDevice;
Description: Create a new Network entry


[Expand]
function NetworkDeviceCreateEx(Size:LongWord):PNetworkDevice;
Description: Create a new Network entry


[Expand]
function NetworkDeviceDestroy(Network:PNetworkDevice):LongWord;
Description: Destroy an existing Network entry


[Expand]
function NetworkDeviceRegister(Network:PNetworkDevice):LongWord;
Description: Register a new Network in the Network table


[Expand]
function NetworkDeviceDeregister(Network:PNetworkDevice):LongWord;
Description: Deregister a Network from the Network table


[Expand]
function NetworkDeviceFind(NetworkId:LongWord):PNetworkDevice;
Description: To be documented


[Expand]
function NetworkDeviceFindByName(const Name:String):PNetworkDevice; inline;
Description: To be documented


[Expand]
function NetworkDeviceFindByDescription(const Description:String):PNetworkDevice; inline;
Description: To be documented


[Expand]
function NetworkDeviceEnumerate(Callback:TNetworkEnumerate; Data:Pointer):LongWord;
Description: To be documented


[Expand]
function NetworkDeviceNotification(Network:PNetworkDevice; Callback:TNetworkNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented


[Expand]
function NetworkEventAllocate(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):PNetworkEvent;
Description: Create and Register a new Event entry in the Event table


[Expand]
function NetworkEventRelease(Event:PNetworkEvent):LongWord;
Description: Deregister and Destroy an Event from the Event table


[Expand]
function NetworkEventRegister(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):THandle;
Description: Register a callback for one or more network events


[Expand]
function NetworkEventDeregister(Handle:THandle):LongWord;
Description: Deregister a network event callback


[Expand]
function NetworkEventNotify(Event:LongWord):LongWord;
Description: To be documented


RTL network functions

[Expand]
function SysHostGetName:String;
Description: To be documented


[Expand]
function SysHostSetName(const AName:String):Boolean;
Description: To be documented


[Expand]
function SysHostGetDomain:String;
Description: To be documented


[Expand]
function SysHostSetDomain(const ADomain:String):Boolean;
Description: To be documented


Network helper functions

[Expand]
function NetworkGetLastError:LongInt;
Description: Get the last network error value for the current Thread


[Expand]
procedure NetworkSetLastError(Error:LongInt);
Description: Set the last network error value for the current Thread


[Expand]
function NetworkGetCount:LongWord;
Description: Get the current network count


[Expand]
function NetworkDeviceCheck(Network:PNetworkDevice):PNetworkDevice;
Description: Check if the supplied Network is in the network table


[Expand]
function NetworkDeviceTypeToString(NetworkType:LongWord):String;
Description: To be documented


[Expand]
function NetworkDeviceStateToString(NetworkState:LongWord):String;
Description: To be documented


[Expand]
function NetworkDeviceStatusToString(NetworkStatus:LongWord):String;
Description: To be documented


[Expand]
function NetworkDeviceStateToNotification(State:LongWord):LongWord;
Description: Convert a Network state value into the notification code for device notifications


[Expand]
function NetworkDeviceStatusToNotification(Status:LongWord):LongWord;
Description: Convert a Network status value into the notification code for device notifications


[Expand]
function NetworkEventCheck(Event:PNetworkEvent):PNetworkEvent;
Description: Check if the supplied Event is in the event table


[Expand]
procedure NetworkLog(Level:LongWord; Network:PNetworkDevice; const AText:String);
Description: To be documented


[Expand]
procedure NetworkLogInfo(Network:PNetworkDevice; const AText:String); inline;
Description: To be documented


[Expand]
procedure NetworkLogWarn(Network:PNetworkDevice; const AText:String); inline;
Description: To be documented


[Expand]
procedure NetworkLogError(Network:PNetworkDevice; const AText:String); inline;
Description: To be documented


[Expand]
procedure NetworkLogDebug(Network:PNetworkDevice; const AText:String); inline;
Description: To be documented


[Expand]
function HardwareAddressToString(const AAddress:THardwareAddress; const ASeparator: String = ''):String;
Description: To be documented


[Expand]
function StringToHardwareAddress(const AAddress:String):THardwareAddress;
Description: To be documented


[Expand]
function ValidHardwareAddress(const AAddress:THardwareAddress):Boolean;
Description: To be documented


[Expand]
function RandomHardwareAddress:THardwareAddress;
Description: To be documented


[Expand]
function CompareHardwareAddress(const AAddress1,AAddress2:THardwareAddress):Boolean;
Description: To be documented


[Expand]
function CompareHardwareDefault(const AAddress:THardwareAddress):Boolean;
Description: To be documented


[Expand]
function CompareHardwareBroadcast(const AAddress:THardwareAddress):Boolean;
Description: To be documented


[Expand]
function CompareHardwareMulticast(const AAddress:THardwareAddress):Boolean;
Description: To be documented


[Expand]
function AdapterTypeToString(AType:Word):String;
Description: To be documented


[Expand]
function AdapterModeToString(AMode:Word):String;
Description: To be documented


[Expand]
function AdapterConfigToString(AConfig:Word):String;
Description: To be documented


[Expand]
function AdapterStateToString(AState:Integer):String;
Description: To be documented


[Expand]
function AdapterStatusToString(AStatus:Integer):String;
Description: To be documented


[Expand]
function FrameTypeToString(AType:Word):String;
Description: To be documented


[Expand]
function MediaTypeToString(AType:Word):String;
Description: To be documented


[Expand]
function PacketTypeToString(AType:Word):String;
Description: To be documented


[Expand]
function ConfigTypeToString(AType:Word):String;
Description: To be documented


[Expand]
function ConfigCommandToString(ACommand:Word):String;
Description: To be documented


[Expand]
function AuthTypeToString(AType:Word):String;
Description: To be documented


[Expand]
function AuthCommandToString(ACommand:Word):String;
Description: To be documented


Return to Unit Reference