singrdk/base/Services/NetStack/Common/IAdapter.cs

48 lines
1.5 KiB
C#

// ----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ----------------------------------------------------------------------------
///
// Microsoft Research, Cambridge
//
using System;
using System.Threading;
using System.Collections;
using Drivers.Net;
namespace NetStack.Common
{
// An Adapter interface, should exist in any environment
// can be implemented by a driver, simulator or whatever.
public interface IAdapter
{
string DriverName { get; }
string DriverVersion { get; }
EthernetAddress HardwareAddress { get; }
uint LinkSpeed { get; }
WaitHandle GetReadHandle();
WaitHandle GetWriteHandle();
// get the received packets from the adapter
void GetReceivedPackets(Queue! outQueue);
// called when received packet has been process and can
// be returned to the device.
void PopulateRxRing(NetPacket! packet);
// get the number of transmitted packets just completed transmission
uint GetTransmittedPackets();
// populate the adapter's transmit ring with new NetPackets
void PopulateTxRing(NetPacket[]! txPackets, uint txPacketCount);
// get the free space at the txRing
int TxSlotsFree { get; }
}
} // namespace Drivers.Net