Difference between revisions of "Unit Network"

From Ultibo.org
Jump to: navigation, search
 
(15 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
'''Ultibo Network interface unit'''
+
'''Ultibo Network Interface unit'''
 
+
''To be documented''
+
  
 
=== Constants ===
 
=== Constants ===
Line 160: 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 613: Line 686:
 
</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;">'''Ethernet network''' <code> *_ETHERNET_PACKET </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
| <code>MIN_ETHERNET_PACKET = 60;</code>
 
| style="width: 50%;"|&nbsp;
 
|-
 
| <code>MAX_ETHERNET_PACKET = 1514;</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;">'''Ethernet 802.3 network''' <code> LLC_HEADER_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|colspan="2"|FRAME_TYPE_ETHERNET_8022
 
|-
 
| <code>LLC_HEADER_SIZE = 3;</code>
 
| SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets
 
|-
 
|}
 
</div></div>
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div style="font-size: 14px; padding-left: 12px;">'''Ethernet SNAP network''' <code> SNAP_HEADER_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|colspan="2"|FRAME_TYPE_ETHERNET_SNAP
 
|-
 
| <code>SNAP_HEADER_SIZE = 5;</code>
 
| SizeOf(TSNAPHeader);
 
|-
 
|}
 
</div></div>
 
<br />
 
 
<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;">'''Generic MII registers (Management Interface)''' <code> MII_* </code></div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Generic MII registers (Management Interface)''' <code> MII_* </code></div>
Line 1,036: Line 1,069:
 
<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>LPA_1000MSFAIL = $8000;</code>
 +
| Master/Slave resolution failure
 
|-
 
|-
 
| <code>LPA_1000LOCALRXOK = $2000;</code>
 
| <code>LPA_1000LOCALRXOK = $2000;</code>
Line 1,085: Line 1,121:
 
| <code>MII_MMD_CTRL_INCR_ON_WT = $C000;</code>
 
| <code>MII_MMD_CTRL_INCR_ON_WT = $C000;</code>
 
| Post increment on writes only
 
| Post increment on writes only
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''PHY link state''' <code> PHY_LINK_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>PHY_LINK_DOWN = 0;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>PHY_LINK_UP = 1;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>PHY_LINK_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 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 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;
 
|-
 
|-
 
|}
 
|}
Line 1,144: 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 1,150: 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;
 
|colspan="2"|&nbsp;
Line 1,176: 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 1,184: Line 1,366:
 
| <code>ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;</code>
 
| <code>ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;</code>
 
| &nbsp;
 
| &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;">'''Ethernet 802.3 network''' <code> LLC_HEADER_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|FRAME_TYPE_ETHERNET_8022
 +
|-
 +
| <code>LLC_HEADER_SIZE = 3;</code>
 +
| SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Ethernet SNAP network''' <code> SNAP_HEADER_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|FRAME_TYPE_ETHERNET_SNAP
 +
|-
 +
| <code>SNAP_HEADER_SIZE = 5;</code>
 +
| SizeOf(TSNAPHeader);
 
|-
 
|-
 
|}
 
|}
Line 1,206: Line 1,414:
 
|-
 
|-
 
|}
 
|}
</div></div>  
+
</div></div>
  
 
'''Hardware addresses'''
 
'''Hardware addresses'''
Line 1,221: Line 1,429:
 
|-
 
|-
 
|}
 
|}
</div></div>
+
</div></div>  
  
'''Multicast addresses'''
+
'''Multicast address'''
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
Line 1,236: Line 1,444:
 
|-
 
|-
 
|}
 
|}
</div></div>  
+
</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;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Adapter statistics'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PAdapterStatistics = ^TAdapterStatistics;</code>
 +
 
 +
<code>TAdapterStatistics = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| PacketsIn:UInt64;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| 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'''
 
'''Network packet'''
Line 1,345: Line 1,607:
 
|}
 
|}
 
</div></div>  
 
</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;
 +
|-
 +
| <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;
 +
|-
 +
|}
 +
</div></div>
  
 
'''Network enumeration callback'''
 
'''Network enumeration callback'''
Line 1,445: Line 1,751:
 
|}  
 
|}  
 
   
 
   
'''Network device types'''
+
'''Network device'''
 
   
 
   
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
Line 1,524: Line 1,830:
 
|colspan="2"|''Statistics Properties''
 
|colspan="2"|''Statistics Properties''
 
|-
 
|-
| <code>ReceiveCount:LongWord;</code>
+
| <code>ReceiveBytes:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ReceiveCount:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ReceiveErrors:LongWord;</code>
+
| <code>ReceiveErrors:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>TransmitCount:LongWord;</code>
+
| <code>TransmitBytes:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>TransmitErrors:LongWord;</code>
+
| <code>TransmitCount:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>BufferOverruns:LongWord;</code>
+
| <code>TransmitErrors:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>BufferUnavailable:LongWord;</code>
+
| <code>StatusCount:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>StatusErrors:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BufferOverruns:UInt64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BufferUnavailable:UInt64;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 1,602: Line 1,920:
 
</div></div>
 
</div></div>
  
'''Packet fragment'''
+
'''Ethernet address'''
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
<code>PPacketFragment = ^TPacketFragment;</code>
+
<code>PEthernetAddress = ^TEthernetAddress;</code>
  
<code>TPacketFragment = packed record</code>
+
<code>TEthernetAddress = array[0..ETHERNET_ADDRESS_SIZE - 1] of Byte;</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>Size:Integer;</code>
+
| &nbsp;
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>Data:Pointer;</code>
+
|}
 +
</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;
 
| &nbsp;
 
|-
 
|-
| <code>Next:PPacketFragment;</code>
+
| <code>SourceAddress:THardwareAddress;</code>
 
| &nbsp;
 
| &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>  
+
</div></div>
  
 
'''Ethernet 802.3 network'''
 
'''Ethernet 802.3 network'''
Line 1,665: Line 2,001:
 
| <code>ProtocolID:Word;</code>
 
| <code>ProtocolID:Word;</code>
 
| &nbsp;
 
| &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> 
 
 
'''Token ring network'''
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<code>PTokenRingAddress = ^TTokenRingAddress;</code>
 
 
<code>TTokenRingAddress = array[0..5] 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>
 
 
'''Token ring header'''
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<code>PTokenRingHeader = ^TTokenRingHeader;</code>
 
 
<code>TTokenRingHeader = packed record</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>
 
 
'''Adapter params'''
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<code>PAdapterParams = ^TAdapterParams;</code>
 
 
<code>TAdapterParams = packed record</code>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
| <code>Version:Word;</code>
 
| Driver version
 
|-
 
| <code>FrameType:Byte;</code>
 
| Driver class
 
|-
 
| <code>AdapterType:Word;</code>
 
| Driver type
 
|-
 
| <code>Number:Byte;</code>
 
| Driver number
 
|-
 
| <code>Name:PChar;</code>
 
| Driver name
 
|-
 
| <code>Functionality:Byte;</code>
 
| How good is this driver
 
|-
 
|}
 
</div></div> 
 
 
 
'''Network params'''
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<code>PNetworkParams = ^TNetworkParams;</code>
 
 
<code>TNetworkParams = packed record</code>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
| <code>MajorRevision:Byte;</code>
 
| Major revision ID of packet specs
 
|-
 
| <code>MinorRevision:Byte;</code>
 
| Minor revision ID of packet specs
 
|-
 
| <code>ParamLength:Byte;</code>
 
| Length of structure in Bytes
 
|-
 
| <code>AddressLength:Byte;</code>
 
| Length of a MAC address
 
|-
 
| <code>MTU:Word;</code>
 
| MTU, including MAC headers
 
|-
 
| <code>MulticastAvailable:Word;</code>
 
| buffer size for multicast addr.
 
|-
 
| <code>RxBuffers:Word;</code>
 
| No of back-to-back MTU rcvs) - 1
 
|-
 
| <code>TxBuffers:Word;</code>
 
| No of successive xmits) - 1
 
|-
 
| <code>IntNo:Word;</code>
 
| Interrupt No to hook for post-EOI processing, 0 = none
 
|-
 
|}
 
</div></div>
 
 
'''Adapter statistics'''
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<code>PAdapterStatistics = ^TAdapterStatistics;</code>
 
 
<code>TAdapterStatistics = record</code>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
| <code>PacketsIn:Int64;</code>
 
| style="width: 50%;"|&nbsp;
 
|-
 
| <code>PacketsOut:Int64;</code>
 
| &nbsp;
 
|-
 
| <code>BytesIn:Int64;</code>
 
| &nbsp;
 
|-
 
| <code>BytesOut:Int64;</code>
 
| &nbsp;
 
|-
 
| <code>ErrorsIn:Int64;</code>
 
| &nbsp;
 
|-
 
| <code>ErrorsOut:Int64;</code>
 
| &nbsp;
 
|-
 
| <code>PacketsLost:Int64;</code>
 
| &nbsp;
 
|-
 
|}
 
</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>
 
| <code>Data:array[0..0] of Byte;</code>
Line 1,884: Line 2,049:
  
  
'''Adapter manager'''
+
'''Network specific classes'''
  
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
<code>TAdapterManager = class(TObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create(ASettings:TNetworkSettings);</code>
+
| [[TAdapterManager|<code>TAdapterManager = class(TObject)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
| <code>FSettings:TNetworkSettings;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>FAdapters:TNetworkList;</code>
+
| List of TNetworkAdapter objects
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>property Settings:TNetworkSettings read FSettings;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddAdapter(AAdapter:TNetworkAdapter):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveAdapter(AAdapter:TNetworkAdapter):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetAdapterByName(const AName:String; ALock:Boolean; AState:LongWord):TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAdapterByType(AAdapterType:Word; ALock:Boolean; AState:LongWord):TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAdapterByDevice(ADevice:PNetworkDevice; ALock:Boolean; AState:LongWord):TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAdapterByAdapter(AAdapter:TNetworkAdapter; ALock:Boolean; AState:LongWord):TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAdapterByNext(APrevious:TNetworkAdapter; ALock,AUnlock:Boolean; AState:LongWord):TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function StartAdapters:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function StopAdapters:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ProcessStatus:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ProcessAdapters:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function EnumerateAdapters(ACallback:TAdapterCallback):Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Adapter transport'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TAdapterTransport = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
|colspan="2"|Note: Upstream
+
| [[TAdapterTransport|<code>TAdapterTransport = class(TListObject)</code>]]
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>constructor Create;</code>
+
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>FrameType:Word;</code>
+
| &nbsp;
+
|-
+
| <code>PacketType:Word;</code>
+
| &nbsp;
+
|-
+
| <code>PacketName:String;</code>
+
| &nbsp;
+
|-
+
| <code>PacketHandler:TAdapterPacketHandler;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Adapter binding'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TAdapterBinding = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
|colspan="2"|Note: Upstream
+
| [[TAdapterBinding|<code>TAdapterBinding = class(TListObject)</code>]]
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>constructor Create(ATransport:TAdapterTransport);</code>
+
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>FrameType:Word;</code>
+
| &nbsp;
+
|-
+
| <code>PacketType:Word;</code>
+
| &nbsp;
+
|-
+
| <code>Transport:TAdapterTransport;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Adapter monitor'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TAdapterMonitor = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
|colspan="2"|Note: Upstream
+
| [[TAdapterMonitor|<code>TAdapterMonitor = class(TListObject)</code>]]
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>constructor Create;</code>
+
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>MonitorHandler:TAdapterMonitorHandler;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
+
'''Adapter authenticator'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TAdapterAuthenticator = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
|colspan="2"|Note: Upstream
+
| [[TAdapterAuthenticator|<code>TAdapterAuthenticator = class(TListObject)</code>]]
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>constructor Create;</code>
+
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>AuthType:Word;</code>
+
| EAP/RSN
+
|-
+
| <code>AuthenticatorHandler:TAdapterAuthenticatorHandler;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Network list'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TNetworkList = class(TLinkedObjList)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create;</code>
+
| [[TNetworkList|<code>TNetworkList = class(TLinkedObjList)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>procedure ClearList;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderConvert:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterConvert:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Network adapter'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TNetworkAdapter = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create(AManager:TAdapterManager; ADevice:PNetworkDevice; const AName:String);</code>
+
| [[TNetworkAdapter|<code>TNetworkAdapter = class(TListObject)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
| <code>FLocalLock:TMutexHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
+
|-
+
| <code>FManager:TAdapterManager;</code>
+
| &nbsp;
+
|-
+
| <code>FDevice:PNetworkDevice;</code>
+
| &nbsp;
+
|-
+
| <code>FName:String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>FState:Integer;</code>
+
| &nbsp;
+
|-
+
| <code>FStatus:Integer;</code>
+
| &nbsp;
+
|-
+
| <code>FMediaType:Word;</code>
+
| Physical Media type (Ethernet/Tokenring etc)
+
|-
+
| <code>FAdapterType:Word;</code>
+
| &nbsp;
+
|-
+
| <code>FLastError:Integer;</code>
+
| &nbsp;
+
|-
+
| <code>FThread:TAdapterThread;</code>
+
| Thread for adapter receiving
+
|-
+
| <code>FBindings:TNetworkList;</code>
+
| List of TAdapterBinding objects
+
|-
+
| <code>FTransports:TNetworkList;</code>
+
| List of TAdapterTransport objects
+
|-
+
| <code>FMonitors:TNetworkList;</code>
+
| List of TAdapterMonitor objects
+
|-
+
| <code>FAuthenticators:TNetworkList;</code>
+
| List of TAdapterAuthenticator objects
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>FStatistics:TAdapterStatistics;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetName:String;</code>
+
| &nbsp;
+
|-
+
| <code>function GetThreadID:TThreadID;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AcquireLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReleaseLock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>property Manager:TAdapterManager read FManager;</code>
+
| &nbsp;
+
|-
+
| <code>property Device:PNetworkDevice read FDevice;</code>
+
| &nbsp;
+
|-
+
| <code>property Name:String read GetName;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>property State:Integer read FState;</code>
+
| &nbsp;
+
|-
+
| <code>property Status:Integer read FStatus write SetStatus;</code>
+
| &nbsp;
+
|-
+
| <code>property MediaType:Word read FMediaType;</code>
+
| &nbsp;
+
|-
+
| <code>property AdapterType:Word read FAdapterType;</code>
+
| &nbsp;
+
|-
+
| <code>property LastError:Integer read FLastError;</code>
+
| &nbsp;
+
|-
+
| <code>property ThreadID:TThreadID read GetThreadID;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetTransportByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TAdapterTransport;</code>
+
| &nbsp;
+
|-
+
| <code>function GetTransportByType(APacketType,AFrameType:Word; ALock:Boolean; AState:LongWord):TAdapterTransport;</code>
+
| &nbsp;
+
|-
+
| <code>function GetTransportByTransport(ATransport:TAdapterTransport; ALock:Boolean; AState:LongWord):TAdapterTransport;</code>
+
| &nbsp;
+
|-
+
| <code>function GetTransportByNext(APrevious:TAdapterTransport; ALock,AUnlock:Boolean; AState:LongWord):TAdapterTransport;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetBindingByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TAdapterBinding;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBindingByType(ATransport:TAdapterTransport; APacketType,AFrameType:Word; ALock:Boolean; AState:LongWord):TAdapterBinding;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBindingByTransport(ATransport:TAdapterTransport; ALock:Boolean; AState:LongWord):TAdapterBinding;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBindingByBinding(ABinding:TAdapterBinding; ALock:Boolean; AState:LongWord):TAdapterBinding;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBindingByNext(APrevious:TAdapterBinding; ALock,AUnlock:Boolean; AState:LongWord):TAdapterBinding;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetMonitorByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TAdapterMonitor;</code>
+
| &nbsp;
+
|-
+
| <code>function GetMonitorByMonitor(AMonitor:TAdapterMonitor; ALock:Boolean; AState:LongWord):TAdapterMonitor;</code>
+
| &nbsp;
+
|-
+
| <code>function GetMonitorByNext(APrevious:TAdapterMonitor; ALock,AUnlock:Boolean; AState:LongWord):TAdapterMonitor;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetAuthenticatorByHandle(AHandle:THandle; ALock:Boolean; AState:LongWord):TAdapterAuthenticator;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAuthenticatorByType(AAuthType:Word; ALock:Boolean; AState:LongWord):TAdapterAuthenticator;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAuthenticatorByAuthenticator(AAuthenticator:TAdapterAuthenticator; ALock:Boolean; AState:LongWord):TAdapterAuthenticator;</code>
+
| &nbsp;
+
|-
+
| <code>function GetAuthenticatorByNext(APrevious:TAdapterAuthenticator; ALock,AUnlock:Boolean; AState:LongWord):TAdapterAuthenticator;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddTransport(APacketType,AFrameType:Word; const APacketName:String; APacketHandler:TAdapterPacketHandler):THandle; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveTransport(AHandle:THandle; APacketType:Word):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddBinding(ATransport:TAdapterTransport; APacketType,AFrameType:Word):THandle; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveBinding(AHandle:THandle; APacketType:Word):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddMonitor(AMonitorHandler:TAdapterMonitorHandler):THandle; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveMonitor(AHandle:THandle):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddAuthenticator(AAuthType:Word; AAuthenticatorHandler:TAdapterAuthenticatorHandler):THandle; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveAuthenticator(AHandle:THandle; AAuthType:Word):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetMTU(AHandle:THandle):Word; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function SendPacket(AHandle:THandle; ADest:Pointer; APacket:PPacketFragment; ASize:Integer):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ResetInterface(AHandle:THandle):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function TerminateDriver(AHandle:THandle):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetReceiveMode(AHandle:THandle):Word; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function SetReceiveMode(AHandle:THandle; AMode:Word):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetAdapterParams(AHandle:THandle):TAdapterParams; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function GetNetworkParams(AHandle:THandle):TNetworkParams; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function GetStatistics(AHandle:THandle):TAdapterStatistics; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetDefaultAddress(AHandle:THandle):THardwareAddress; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function GetHardwareAddress(AHandle:THandle):THardwareAddress; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function SetHardwareAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBroadcastAddress(AHandle:THandle):THardwareAddress; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function GetMulticastAddresses(AHandle:THandle):TMulticastAddresses; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;;
+
|-
+
| <code>function AddMulticastAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveMulticastAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function StartAdapter:Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function StopAdapter:Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function ProcessStatus:Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function ProcessAdapter:Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function CompareAddress(const AAddress1,AAddress2:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function CompareDefault(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function CompareHardware(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function CompareBroadcast(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
|-
+
| <code>function CompareMulticast(AHandle:THandle; const AAddress:THardwareAddress):Boolean; virtual;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Adapter thread'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TAdapterThread = class(TThread)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create(AAdapter:TNetworkAdapter);</code>
+
| [[TAdapterThread|<code>TAdapterThread = class(TThread)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
+
|-
+
| <code>FAdapter:TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>procedure Execute; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>function SendHandle(AHandle:THandle):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReceiveHandle:THandle;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Adapter buffer'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TAdapterBuffer = class(TObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
|colspan="2"|Note: Ring buffer for Packets.
+
| [[TAdapterBuffer|<code>TAdapterBuffer = class(TObject)</code>]]
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>constructor Create;</code>
+
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TCriticalSectionHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
+
|-
+
| <code>FSize:Integer;</code>
+
| &nbsp;
+
|-
+
| <code>FCount:Integer;</code>
+
| &nbsp;
+
|-
+
| <code>FNextRead:Integer;</code>
+
| &nbsp;
+
|-
+
| <code>FNextWrite:Integer;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>FList:TList;</code>
+
| &nbsp;
+
|-
+
| <code>FMemory:TMemoryStream;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AcquireLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReleaseLock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>procedure SetSize(ASize:Integer);</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>property Size:Integer read FSize write SetSize;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReadNext:Pointer;</code>
+
| &nbsp;
+
|-
+
| <code>function WriteNext:Pointer;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Wired adapter'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TWiredAdapter = class(TNetworkAdapter)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create(AManager:TAdapterManager; ADevice:PNetworkDevice; const AName:String);</code>
+
| [[TWiredAdapter|<code>TWiredAdapter = class(TNetworkAdapter)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FDefaultAddress:THardwareAddress;</code>
+
| &nbsp;
+
|-
+
| <code>FHardwareAddress:THardwareAddress;</code>
+
| &nbsp;
+
|-
+
| <code>FBroadcastAddress:THardwareAddress;</code>
+
| &nbsp;
+
|-
+
| <code>FMulticastAddresses:TMulticastAddresses;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>function AddTransport(APacketType,AFrameType:Word; const APacketName:String; APacketHandler:TAdapterPacketHandler):THandle; override;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveTransport(AHandle:THandle; APacketType:Word):Boolean; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetMTU(AHandle:THandle):Word; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function SendPacket(AHandle:THandle; ADest:Pointer; APacket:PPacketFragment; ASize:Integer):Boolean; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetDefaultAddress(AHandle:THandle):THardwareAddress; override;</code>
+
| &nbsp;
+
|-
+
| <code>function GetHardwareAddress(AHandle:THandle):THardwareAddress; override;</code>
+
| &nbsp;
+
|-
+
| <code>function SetHardwareAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; override;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBroadcastAddress(AHandle:THandle):THardwareAddress; override;</code>
+
| &nbsp;
+
|-
+
| <code>function GetMulticastAddresses(AHandle:THandle):TMulticastAddresses; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddMulticastAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; override;</code>
+
| &nbsp;
+
|-
+
| <code>function RemoveMulticastAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function StartAdapter:Boolean; override;</code>
+
| &nbsp;
+
|-
+
| <code>function StopAdapter:Boolean; override;</code>
+
| &nbsp;
+
|-
+
| <code>function ProcessAdapter:Boolean; override;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Network setting'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TNetworkSetting = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
| [[TNetworkSetting|<code>TNetworkSetting = class(TListObject)</code>]]
|-
+
| <code>FName:String;</code>
+
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>FValue:String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>FHash:LongWord;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>procedure SetName(const AName:String);</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>property Name:String read FName write SetName;</code>
+
| &nbsp;
+
|-
+
| <code>property Value:String read FValue write FValue;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>property Hash:LongWord read FHash;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Network settings'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TNetworkSettings = class(TObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create;</code>
+
| [[TNetworkSettings|<code>TNetworkSettings = class(TObject)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
| <code>FLocalLock:TMutexHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>FHostName:String;</code>
+
| &nbsp;
+
|-
+
| <code>FDomainName:String;</code>
+
| &nbsp;
+
|-
+
| <code>FList:TLinkedObjList;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AcquireLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReleaseLock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetHostName:String;</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetHostName(const AHostName:String);</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetDomainName:String;</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetDomainName(const ADomainName:String);</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ExtractName(const AValue,AToken:String):String;</code>
+
| &nbsp;
+
|-
+
| <code>function ExtractValue(const AValue,AToken:String):String;</code>
+
| &nbsp;
+
|-
+
| <code>function ExtractPrefix(const AValue:String):String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function SplitName(const AName:String):String;</code>
+
| &nbsp;
+
|-
+
| <code>function SplitPrefix(const AName:String):String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function MergePrefix(const APrefix,AName:String):String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function TranslateString(const AValue,ADefault:String):String;</code>
+
| &nbsp;
+
|-
+
| <code>function TranslateInteger(const AValue:String; ADefault:Integer):Integer;</code>
+
| &nbsp;
+
|-
+
| <code>function TranslateBoolean(const AValue:String; ADefault:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetFromList(const AName:String):TNetworkSetting;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function FindFromList(const AName:String):String;</code>
+
| &nbsp;
+
|-
+
| <code>function FindFromEnvironment(const AName:String):String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>property HostName:String read GetHostName write SetHostName;</code>
+
| &nbsp;
+
|-
+
| <code>property DomainName:String read GetDomainName write SetDomainName;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetString(const AName:String):String;</code>
+
| &nbsp;
+
|-
+
| <code>function GetStringDefault(const AName,ADefault:String):String;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetInteger(const AName:String):Integer;</code>
+
| &nbsp;
+
|-
+
| <code>function GetIntegerDefault(const AName:String; ADefault:Integer):Integer;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetBoolean(const AName:String):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function GetBooleanDefault(const AName:String; ADefault:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AddString(const AName,AValue:String):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function AddInteger(const AName:String; AValue:Integer):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function AddBoolean(const AName:String; AValue:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function Remove(const AName:String):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function LoadFromFile(const AFileName:String; AFlat:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function LoadFromStream(AStream:TStream; AFlat:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function LoadFromStrings(AStrings:TStrings; AFlat:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function SaveToFile(const AFileName:String; AFlat:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function SaveToStream(AStream:TStream; AFlat:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function SaveToStrings(AStrings:TStrings; AFlat:Boolean):Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function LoadFromEnvironment:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div> 
+
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 
+
'''Service set'''
+
 
+
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
+
 
+
<code>TServiceSet = class(TListObject)</code>
+
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
+
{| class="wikitable" style="font-size: 14px; background: white;"
+
 
|-
 
|-
| <code>constructor Create;</code>
+
| [[TServiceSet|<code>TServiceSet = class(TListObject)</code>]]
| style="width: 50%;"|&nbsp;
+
|-
+
| <code>destructor Destroy; override;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
+
|-
+
| <code>FLock:TSynchronizerHandle;</code>
+
| &nbsp;
+
|-
+
| <code>FLocalLock:TMutexHandle;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function GetName:String;</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetName(const AName:String);</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetServiceSetType(AServiceSetType:LongWord);</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetServiceSetTime(const AServiceSetTime:Int64);</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetAddress(const AAddress:THardwareAddress);</code>
+
| &nbsp;
+
|-
+
| <code>procedure SetAdapter(AAdapter:TNetworkAdapter);</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
+
|-
+
| <code>FName:String;</code>
+
| &nbsp;
+
|-
+
| <code>FServiceSetType:LongWord;</code>
+
| BSS/ESS/IBSS
+
|-
+
| <code>FServiceSetTime:Int64;</code>
+
| Flush time
+
|-
+
| <code>FAddress:THardwareAddress;</code>
+
| Address of service set
+
|-
+
| <code>FAdapter:TNetworkAdapter;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function AcquireLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReleaseLock:Boolean;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
+
|-
+
| <code>property Name:String read GetName write SetName;</code>
+
| &nbsp;
+
|-
+
| <code>property ServiceSetType:LongWord read FServiceSetType write SetServiceSetType;</code>
+
| &nbsp;
+
|-
+
| <code>property ServiceSetTime:Int64 read FServiceSetTime write SetServiceSetTime;</code>
+
| &nbsp;
+
|-
+
| <code>property Address:THardwareAddress read FAddress write SetAddress;</code>
+
| &nbsp;
+
|-
+
| <code>property Adapter:TNetworkAdapter read FAdapter write SetAdapter;</code>
+
| &nbsp;
+
|-
+
|colspan="2"|&nbsp;
+
|-
+
| <code>function ReaderLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function ReaderConvert:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterLock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterUnlock:Boolean;</code>
+
| &nbsp;
+
|-
+
| <code>function WriterConvert:Boolean;</code>
+
| &nbsp;
+
 
|-
 
|-
 
|}
 
|}
</div></div>
 
 
<br />
 
<br />
  
Line 3,118: 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 3,130: 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 3,142: 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 3,154: 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 3,169: 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 3,181: 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 3,193: 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 3,205: 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 3,217: 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 3,225: 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 3,241: 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 3,253: 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 3,265: 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 3,277: 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 3,295: 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 3,313: 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 3,325: 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 3,340: 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 3,352: 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 3,364: 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 3,376: 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 3,388: 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 3,400: 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 3,412: 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 3,424: 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 3,436: 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 3,444: 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 3,460: 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 3,472: 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 3,484: 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 3,499: 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 3,511: 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 3,523: 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 3,535: 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 3,545: 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 NetworkGetLastError:LongInt; 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 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;">
 
<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
 
| Last Network Error or ERROR_SUCCESS if no error
 
| Last Network Error or ERROR_SUCCESS if no error
 
|-
 
|-
Line 3,557: Line 2,603:
 
<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 NetworkSetLastError(Error:LongInt); inline;</pre>
+
<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 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;">
 
<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 3,569: Line 2,615:
 
<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 NetworkGetCount:LongWord; inline;</pre>
+
<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 3,586: 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 3,598: 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 3,610: 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 3,622: 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 3,634: 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 3,646: 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 3,658: 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 3,670: 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 3,682: Line 2,728:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,694: Line 2,740:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,706: Line 2,752:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,718: Line 2,764:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,725: Line 2,771:
 
<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;">function HardwareAddressToString(const AAddress:THardwareAddress; const ASeparator: String = ''):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 3,742: Line 2,788:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,754: Line 2,800:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,766: Line 2,812:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,778: 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 3,790: 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 3,802: 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 3,814: 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 3,826: 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 3,838: 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 3,850: 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 3,862: 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 3,874: 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 3,886: 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 3,898: 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 3,910: Line 2,956:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 3,922: 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 3,934: 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 3,946: 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 3,958: 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