tenet.protocol.datalink

## 接口 IDataLinkLayer

- 所有超级接口:
    IClient<MediumAddress>, IProtocol, IStateSetable
  所有已知实现类:
    SimpleEthernetDatalink

      public interface IDataLinkLayer
      extends IStateSetable, IProtocol, IClient<MediumAddress>

  Datalink层的标准接口.
  该接口可使能.
  该接口为作为IClient的特征为`MediumAddress`，特征域即为该接口的实例的MAC地址.
  版本:
    09.01
  作者:
    meilunsheng
  另请参阅:
    `IStateSetable`, `tenet.util.pattern.serviceclient`, `MediumAddress`

- - ### 嵌套类概要

    嵌套类
    限定符和类型 | 接口和说明
    --- | ---
    `static class` | `IDataLinkLayer.ReceiveParam` 接受过程的中断信号参数.
    `static class` | `IDataLinkLayer.ReceiveStatus` 接收函数中断返回状态的枚举.
    `static class` | `IDataLinkLayer.TransmitParam` 传输过程的中断信号参数.
    `static class` | `IDataLinkLayer.TransmitStatus` 传输函数中断返回状态的枚举.

  - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `static int` | `INT_FRAME_RECEIVE` 可等待中断信号。
    `static int` | `INT_FRAME_RECEIVE_READY` 可等待中断信号。
    `static int` | `INT_FRAME_TRANSMIT` 可等待中断信号。
    `static int` | `INT_FRAME_TRANSMIT_READY` 可等待中断信号。
    `static int` | `INT_INTERFACE_DOWN` 可等待中断信号。
    `static int` | `INT_INTERFACE_UP` 可等待中断信号。

  - ### 方法概要

    方法
    限定符和类型 | 方法和说明
    --- | ---
    `int` | `getMTU()` 获得MTU
    `boolean` | `isLinkUp()` 判断设备是否处于接入状态
    `void` | `receiveFrame(FrameParamStruct param)` 请求接收一个帧。
    `void` | `transmitFrame(FrameParamStruct param)` 请求发送一个帧.

    - ### 从接口继承的方法 tenet.protocol.statecontrol.IStateSetable

      `disable, enable, isEnable`

    - ### 从接口继承的方法 tenet.protocol.IProtocol

      `dump, getIdentify, getName`

    - ### 从接口继承的方法 tenet.util.pattern.serviceclient.IClient

      `attachTo, detachFrom, getUniqueID, setUniqueID`

- - ### 字段详细资料

    - #### INT_FRAME_RECEIVE

          static final int INT_FRAME_RECEIVE

      可等待中断信号。当该datalink被调用`receiveFrame(FrameParamStruct)`后，当这个过程完成时调用者被该信号中断，参数为一个`IDataLinkLayer.ReceiveParam`
      另请参阅:
        `IDataLinkLayer.ReceiveParam`, 常量字段值

    - #### INT_FRAME_RECEIVE_READY

          static final int INT_FRAME_RECEIVE_READY

      可等待中断信号。当该datalink被调用`receiveFrame(FrameParamStruct)`后，当这个过程完成时所有上层协议均会被该信号中断，参数为该datalink的MAC
      另请参阅:
        常量字段值

    - #### INT_FRAME_TRANSMIT

          static final int INT_FRAME_TRANSMIT

      可等待中断信号。当该datalink被调用`transmitFrame(FrameParamStruct)`后，当这个过程完成时调用者被该信号中断，参数为一个`IDataLinkLayer.TransmitParam`
      另请参阅:
        `IDataLinkLayer.TransmitParam`, 常量字段值

    - #### INT_FRAME_TRANSMIT_READY

          static final int INT_FRAME_TRANSMIT_READY

      可等待中断信号。当该datalink被调用`transmitFrame(FrameParamStruct)`后，当这个过程完成时所有上层协议均会被该信号中断，参数为该datalink的MAC
      另请参阅:
        常量字段值

    - #### INT_INTERFACE_DOWN

          static final int INT_INTERFACE_DOWN

      可等待中断信号。当datalink处于接入状态时，自身被禁用或者物理介质连接的datalink被禁用，或者物理介质被禁用，则会导致设备转换为非接入状态，同时向所有上层协议发送该中断信号。参数为该datalink的MAC
      另请参阅:
        常量字段值

    - #### INT_INTERFACE_UP

          static final int INT_INTERFACE_UP

      可等待中断信号。当datalink处于非接入状态时，自身、物理介质连接的datalink以及物理介质均被使能，则会导致设备转换为接入状态，同时向所有上层协议发送该中断信号。参数为该datalink的MAC
      另请参阅:
        常量字段值

  - ### 方法详细资料

    - #### isLinkUp

          boolean isLinkUp()

      判断设备是否处于接入状态
      返回:
        true 接入状态； false 非接入状态

    - #### receiveFrame

          void receiveFrame(FrameParamStruct param)

      请求接收一个帧。
      参数:
        `param` - 接收参数
        这里要求param的ethertype通常必须为协议对应的ethertype，其他参数对接收没有实际作用。但该参数在非正常接收的情况下可以通过中断完整返回。
      另请参阅:
        `FrameParamStruct`, `IDataLinkLayer.ReceiveParam`, `IDataLinkLayer.ReceiveStatus`, `INT_FRAME_RECEIVE`, `INT_FRAME_RECEIVE_READY`

    - #### transmitFrame

          void transmitFrame(FrameParamStruct param)

      请求发送一个帧.
      参数:
        `param` - 发送参数
      另请参阅:
        `FrameParamStruct`, `IDataLinkLayer.TransmitParam`, `IDataLinkLayer.TransmitStatus`, `INT_FRAME_TRANSMIT`, `INT_FRAME_TRANSMIT_READY`

    - #### getMTU

          int getMTU()

      获得MTU
      返回:
        MTU