zeerd's blog         Search     Categories     Tags     Feed

闲来生雅趣,无事乐逍遥。对窗相望雪,一盏茶香飘。

AVDECC 简析

#AVDECC,AVB @Ethernet


AVDECC 实体

从更宏观的角度,以设备实体为单位,一个 AVDECC 设备需要包含以下的功能组件。

@startmindmap
    <style>
    mindmapDiagram {
        .op * {
            LineStyle 4
        }
    }
    </style>
    * AVDECC End Station
    **_ 具有一到多个 AVDECC 实体的终端设备
    ** 必选
    *** AEM
    ****_ AVDECC Entity Model
    **** ADP
    *****_ AVDECC Discovery Protocol
    *****_ 识别网络上当前可用的所有 AVDECC 实体\n并在它们被添加到网络或从网络移除时更新状态。
    ***** 宣布 AVDECC 实体可用(available)。
    ***** 宣布一个 AVDECC 实体即将离开(departing)。
    ***** 发现(discover)网络上的一个或所有 AVDECC 实体。
    **** AECP
    *****_ AVDECC Enumeration and Control Protocol
    *****_ 为要携带的枚举和控制模型提供一种处理机制。
    **** ACMP
    *****_ AVDECC Connection Management Protocol
    *****_ 在流利用者(Sink)和流源(Source)之间建立和断开连接。
    *** 网络接口
    *** AVTP Control
    ** 可选 <<op>>
    *** 更多 AVDECC 实体/网络接口 对
    *** gPTP
    *** AVTPDU serdes
    *** MAAP
    *** FQTSS
    *** SRP
@endmindmap

ADP

用于使 AVDECC 实体发现其他实体及被其他实体发现的机制。 ADP 报文的发送形式为多播。

@startmindmap
    <style>
    mindmapDiagram {
        .op * {
         LineStyle 4
        }
    }
    </style>
    * ADP
    **_ AVDECC Discovery Protocol
    **_ ADP 的目的地址固定为:91-e0-f0-01-00-00
    ** Advertising Entity State machine
    ***_ 用于在终端站上发布 AVDECC 实体的状态机
    ** Advertising Interface State machine
    ***_ 每个被发布的 AVDECC 实体对应的 AVB 接口状态机
    ** Discovery State machine
    ***_ 用于实现 AVDECC 控制器或请求发现其他 AVDECC 实体
    ***_ 可以要求指定 ID 的实体回复 ENTITY_AVAILABLE
    ***_ 可以要求所有实体(指定 ID 为 0 )回复 ENTITY_AVAILABLE
@endmindmap

当足够多的 ADP 报文于网络上流转之后,所有 AVDECC 终端都可以找到自己期望的另一个 终端。

ACMP

根据前文所述,每一个 AVDECC 实体中都必然包涵 ACMP 功能。 当终端通过 ADP 报文找到期望的、对应的 AVDECC 终端之后,就可以通过 ACMP 报文发起连接。 这个连接动作可能是预设的,也可能是用户手动操作而触发的。

@startmindmap
    <style>
    mindmapDiagram {
        .op * {
         LineStyle 4
        }
    }
    </style>
    * ACMP
    **_ AVDECC Connection Management Protocol
    ** ACMP Controller \nstate machine
    ***_ 描述了 AVDECC 在 ACMP 会话中的主动参与方式。
    ***_ AVDECC 控制器可以独立于这些状态机来监视所有接收到的 ACMP 消息,\n用于跟踪网络上的连接状态。
    *** Fast connect
    ****_ 启动过程中,Listener 根据预存的状态直接向\n Talker 发起连接
    *** Fast disconnect
    ****_ 关机过程中,Listener 直接向 Talker 通知\n断开连接
    *** Controller connect
    ****_ 由 Controller 通知 Listener 向 Talker\n 发送建立连接请求
    *** Controller disconnect
    ****_ 由 Controller 通知 Listener 向 Talker\n 发送断开连接请求
    ** ACMP Listener \nState Machine
    ** ACMP Talker \nState Machine
@endmindmap

AECP

@startmindmap
    <style>
    mindmapDiagram {
        .op * {
         LineStyle 4
        }
    }
    </style>
    * AECP
    **_ 所有 AECPDU 都是通过单播从 Controller 发送到 AVDECC 实体,并通过单播接收答复。
    **_ 枚举(Enumeration)是获取对应的单个 AVDECC 实体的功能、格式和控制方式的过程。
    **_ 控制(Control)是操作功能、格式和控制方式以将 AVDECC 实体配置为可用状态的过程。
    ** AEM format
    ***_ AVDECC 实体模型命令和响应允许 AVDECC 实体暴露 AVDECC 的实体模型。
    *** AEM Commands
    ****_ 用于发送与 AVDECC 实体模型交互的实体模型命令。
    *** AEM Responses
    ****_ 来自 AVDECC 实体,\n指示成功或失败并返回对应请求信息的实体模型响应。
    *** AEM Entity State Machine
    ****_ 接受命令、处理命令并回复
    *** AEM Controller State Machine
    ****_ 发送命令并处理回复
    ** Address Access Entity State Machine
    ***_ 处理地址访问命令的状态机。\n用于读取、写入或处理启动消息中包含的 TLV 数据。
    ***_ 这里的地址可以是寄存器地址,甚至用于固件升级功能。\n或者制定地址指针开始执行程序。
    ***_ 该命令从 AVDECC 控制器发送到目标 AVDECC 实体。
    ** Legacy AV/C Controller State Machine
    ***_ 处理遵循 IEEE 1394 AV/C 语义的传统 AV/C 命令/答复。
    ** Vendor Unique Controller State Machine
    ***_ 处理供应商自定义的 命令/答复。
    ** HDCP APM Entity State Machine
    ***_ 处理 HDCP APM 命令、用于传输 HDCP IIA 认证协议消息\n或 HDCP IIA 认证协议消息的一部分。
    ***_ 该命令从 AVDECC 控制器发送到目标 AVDECC 实体。
@endmindmap

AVDECC 角色

从功能角度, AVDECC 可以分成如下四种功能角色:

@startmindmap
    <style>
    mindmapDiagram {
        .op * {
         LineStyle 4
        }
    }
    </style>
    * AVDECC

    ** AVDECC Controller
    ***_ 具有 AVDECC 控制器角色的 AVDECC 实体、\n向其他 AVDECC 实体发起命令并从其接收响应。
    *** 必选
    ****_ AEM format
    ****_ AEM Commands
    ****_ AEM Responses
    ****_ AEM Controller State Machine\n(支持部分指令,详情不在此展开。下同)
    *** 可选 <<op>>
    ****_ ACMP Controller state machine
    ****_ AEM Controller State Machine
    ****_ AEM Entity State Machine
    ****_ Address Access Controller State Machine
    ****_ Legacy AV/C Controller State Machine
    ****_ Vendor Unique Controller State Machine

    ** AVDECC Talker
    ***_ 可以产生一个或多个 AVTP 流的 AVDECC实体。
    *** 必选
    ****_ IEEE 1722 AVTP Talker
    ****_ ACMP Talker State Machine
    ****_ AEM format
    ****_ AEM Commands
    ****_ AEM Responses
    ****_ AEM Entity State Machine
    *** 可选 <<op>>
    ****_ AEM Entity State Machine
    ****_ Address Access Entity State Machine
    ****_ Legacy A/VC Entity State Machine
    ****_ Vendor Unique Entity State Machine

    ** AVDECC Listener
    ***_ 可以接收一个或多个 AVTP 流的 AVDECC 实体。
    *** 必选
    ****_ IEEE 1722 AVTP Listener
    ****_ ACMP Listener State Machine
    ****_ AEM format
    ****_ AEM Commands
    ****_ AEM Responses
    ****_ AEM Entity State Machine
    *** 可选 <<op>>
    ****_ AEM Entity State Machine
    ****_ Address Access Entity State Machine
    ****_ Legacy A/VC Entity State Machine
    ****_ Vendor Unique Entity State Machine

    ** AVDECC Responder
    ***_ 不实现上述三中角色,但仍使用 AVDECC 协议的实体。
    *** 必选
    ****_ AEM format
    ****_ AEM Commands
    ****_ AEM Responses
    ****_ AEM Entity State Machine
    *** 可选 <<op>>
    ****_ AEM Entity State Machine
    ****_ Address Access Entity State Machine
    ****_ Legacy A/VC Entity State Machine
    ****_ Vendor Unique Entity State Machine
@endmindmap