EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel :...

120
EPH-AFDX EPH-AFDX EPH-AFDX EPH-AFDX 软件参考手册 ARINC664 ARINC664 ARINC664 ARINC664 AFDX AFDX AFDX AFDX 通讯模块) Tel(86)-28-8514 8273 Fax(86)-28-8514 8287 Http://www.enpht.com Http://www.enpht.com Http://www.enpht.com Http://www.enpht.com 成都恩菲特科技有限公司

Transcript of EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel :...

Page 1: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDXEPH-AFDXEPH-AFDXEPH-AFDX 软件参考手册

(ARINC664ARINC664ARINC664ARINC664AFDXAFDXAFDXAFDX通讯模块)

Tel:(86)-28-8514 8273 Fax:(86)-28-8514 8287 Http://www.enpht.comHttp://www.enpht.comHttp://www.enpht.comHttp://www.enpht.com成都恩菲特科技有限公司

Page 2: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 2 页 共 120 页

目 录

第 1章. 版权声明................................................................................................................................................................................................................................................................................................................................................................................................................................................5555

第 2章. 更新版本................................................................................................................................................................................................................................................................................................................................................................................................................................................5555

第 3章. 函数开发环境....................................................................................................................................................................................................................................................................................................................................................................................................................6666

第 4章. EPH-EPH-EPH-EPH-AFDXAFDXAFDXAFDX APIAPIAPIAPI RoutinesRoutinesRoutinesRoutines................................................................................................................................................................................................................................................................................................................................ 7777

第 5章. 使用纲要................................................................................................................................................................................................................................................................................................................................................................................................................................................8888

AFDX概述.................................................................................................................................8

虚拟链路(VL).............................................................................................................................8

子虚拟链路(SubVLs).................................................................................................................9

AFDX帧结构.............................................................................................................................9

软件功能描述...........................................................................................................................11

第 6章. 函数概要说明............................................................................................................................................................................................................................................................................................................................................................................................................14141414

系统函数...................................................................................................................................14

发送功能函数...........................................................................................................................15

错误注入函数...........................................................................................................................15

VL接收功能函数.................................................................................................................... 16

Sequential Monitor接收功能函数.......................................................................................... 16

IRIG功能函数(需板卡支持)............................................................................................. 16

第 7章. 函数详细说明............................................................................................................................................................................................................................................................................................................................................................................................................18181818

EphAFDX_AutoConnectToFirst.............................................................................................. 19

EphAFDX_AutoConnectToBusSlot.........................................................................................20

EphAFDX_USB_AutoConnectToFirst.................................................................................... 22

EphAFDX_USB_ConnectToUsbAddr.....................................................................................23

EphAFDX_Reset...................................................................................................................... 25

EphAFDX_ResetVL.................................................................................................................26

EphAFDX_Reset_TimeTag......................................................................................................27

EphAFDX_GetManuID............................................................................................................28

EphAFDX_GetDevID...............................................................................................................29

EphAFDX_GetVersion............................................................................................................. 30

EphAFDX_Close...................................................................................................................... 31

EphAFDX_StatusGetString......................................................................................................32

EphAFDX_RegisterFunction....................................................................................................33

EphAFDX_Set_Xmt_Mode......................................................................................................35

EphAFDX_Set_ES_Dest_Addr................................................................................................36

EphAFDX_Set_Xmt_Options.................................................................................................. 38

Page 3: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 3 页 共 120 页

EphAFDX_Create_XmtVL...................................................................................................... 40

EphAFDX_Create_SAP_XmtPort............................................................................................42

EphAFDX_Create_Queuing_XmtPort.....................................................................................44

EphAFDX_Create_Sampling_XmtPort................................................................................... 46

EphAFDX_Set_Rcv_Mode...................................................................................................... 48

EphAFDX_Get_Rcv_Mode......................................................................................................49

EphAFDX_Create_RcvVL.......................................................................................................50

EphAFDX_Create_SAP_RcvPort............................................................................................ 53

EphAFDX_Create_Queuing_RcvPort......................................................................................55

EphAFDX_Create_Sampling_RcvPort.................................................................................... 57

EphAFDX_StartStop_Rcv........................................................................................................59

EphAFDX_StartStop_Xmt....................................................................................................... 60

EphAFDX_Write_SAP_Message.............................................................................................61

EphAFDX_Write_Queuing_Message...................................................................................... 63

EphAFDX_Write_Sampling_Message.....................................................................................64

EphAFDX_Read_SAP_Message..............................................................................................65

EphAFDX_Read_SAP_MessageEx.........................................................................................67

EphAFDX_Read_Queuing_Message.......................................................................................70

EphAFDX_Read_Queuing_MessageEx...................................................................................72

EphAFDX_Read_Sampling_Message..................................................................................... 75

EphAFDX_Get_Xmt_VLPktCount..........................................................................................77

EphAFDX_Get_Rcv_PktCount................................................................................................78

EphAFDX_Get_Xmt_PktCount............................................................................................... 79

EphAFDX_Set_Xmt_PktCount................................................................................................80

EphAFDX_Get_Rcvd_Msg_Cnt..............................................................................................81

EphAFDX_TimeGetString....................................................................................................... 82

EphAFDX_Set_Port_ActiveState.............................................................................................83

EphAFDX_Set_Port_Address.................................................................................................. 84

EphAFDX_Set_Xmt_Network.................................................................................................85

EphAFDX_Set_Xmt_Skew......................................................................................................86

EphAFDX_Get_Rcvd_Chars_Read......................................................................................... 87

EphAFDX_Set_Rcv_VLidActive............................................................................................ 88

EphAFDX_Set_Rcv_NoFilter..................................................................................................90

EphAFDX_Read_Seq_Monitor................................................................................................91

EphAFDX_Find_MsginBuffer................................................................................................. 92

Page 4: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 4 页 共 120 页

EphAFDX_Module_IsRunning................................................................................................94

EphAFDX_Inject_SN_Err........................................................................................................95

EphAFDX_Inject_IPChecksum_Err........................................................................................ 97

EphAFDX_Inject_Length_Err..................................................................................................99

EphAFDX_Inject_FragmentSize_Err.....................................................................................101

EphAfdx_SetIp_TypeofService..............................................................................................102

EphAfdx_Alter_Headers.........................................................................................................103

EphAfdx_Get_Headers...........................................................................................................104

EphAfdx_Convert_Header_Endian........................................................................................105

EphAfdx_Get_PHY_State......................................................................................................106

EphAfdx_Set_PHY_Speed.....................................................................................................107

EphAfdx_IRIG_Config...........................................................................................................108

EphAfdx_IRIG_Calibration....................................................................................................109

EphAfdx_IRIG_Valid............................................................................................................. 110

附录 1111 数据结构........................................................................................................................................................................................................................................................................................................................................................................................................................................................ 111111111111

EPAFDX_TIME......................................................................................................................111

API_INT_FIFO....................................................................................................................... 111

MAC Header Structure........................................................................................................... 113

IP Header Structure.................................................................................................................114

UDP Header Structure.............................................................................................................116

Header Structure......................................................................................................................116

RCV_VL_STRUCT................................................................................................................116

PacketInf..................................................................................................................................118

PHY_STATUS........................................................................................................................ 119

附录 2222 宏定义........................................................................................................................................................................................................................................................................................................................................................................................................................................................................120120120120

Page 5: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 5 页 共 120 页

第 1 章. 版权声明

所有恩菲特公司出售的软件产品或随同硬件产品出售的软件和文件,其版

权属恩菲特公司所有,恩菲特公司保留软件产品和文件方面的所有版权。用户对

产品的购买并不表示用户在版权方面获得任何许可。未经恩菲特公司书面许可的

任何复制和出售均是被禁止的。

第 2 章. 更新版本

所有版本和手册更新及发行时间都列举在下表。手册的初始版本是 Ver1.00。

不论何时更新手册,版本号都在尾数加 1。当更新涉及到较为重要的内容时,版

本号中间的数加 1,当更新涉及到核心内容时,版本号第一位数加 1。更新的内

容通过手册发行,包括修改的内容及对手册新增加的内容。新版本均包括了对旧

版本更改的内容。每个新版本或更新后版本都有一页标注该文献的更改情况。

版本号 日期 硬件版本 版本说明 备注

Ver 1.00 2015年 1月 V1.00 初始化版本

Ver1.10 2015年 6月 V1.00 1增加 USB连接函数

2、复位时标函数保留

Page 6: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 6 页 共 120 页

第 3 章. 函数开发环境

在本手册中描述的函数为 C和 C++格式。此 API函数可以使用在Windows

环境下所有 32Bit 开发工具和图形化开发工具。例如,您可以在 VC++6.0、

Labwindows/CVI、Labview、VB、Boland C++等多种编译环境下使用我们提供

的开发库进行二次开发。开发库包括头文件(*.h)、库文件(*.lib)和动态库

文件(*.dll)。下面介绍在各种编译环境下使用开发库的方法。

1)1)1)1) VisualVisualVisualVisual C++C++C++C++ &&&&Labwindows/CVILabwindows/CVILabwindows/CVILabwindows/CVI

首先,将开发库文件(*.h、*.lib、*.dll)文件拷贝在您的开发工程文

件中;然后在您的源文件中包含头文件,如#include “EphAFDX_32.h”;最

后再将库文件(EphAFDX_32.lib)加入你的工程中即可编译。

2)2)2)2) LabviewLabviewLabviewLabview

在 Labview下进行开发时,您可以将我们已经生成好的共享库放在你

的 Labview软件安装目录的 user.lib目录中,也可以手动生成共享库。点击

Labview的“工具->导入->共享库(.dll)”菜单功能将动态库导入即可。需要

注意的是,在“配置包含路径和预处理定义”时,需指定头文件

“visatype.h”的路径:

注:visatype.hvisatype.hvisatype.hvisatype.h文件在产品配套光盘的 INCINCINCINC文件夹中可以找到。

visatype.h路径

Page 7: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 7 页 共 120 页

第 4 章. EPH-EPH-EPH-EPH-AFDXAFDXAFDXAFDX APIAPIAPIAPI RoutinesRoutinesRoutinesRoutines

EPH-AFDXAPI是基于 AFDX模块 API函数库编写的。目的是为了让读者了

解 API函数库中的各类函数,便于用户在 API 函数库的基础上编程。其中各个

函数的使用范例都是在 Labwindows/CVI7.0 或 VC++6.0 平台下编写的,且较为

简略,详细使用可参考与板卡配套的示例程序。

为了更方便、更直观的了解函数功能及使用方法,将恩菲特 AFDX模块的

API函数前缀统一为:EphAFDX_,文中函数说明格式如下:

EphEphEphEphAFDXAFDXAFDXAFDX_AutoConnectToFirst_AutoConnectToFirst_AutoConnectToFirst_AutoConnectToFirst函数功能

此函数自动连接到找到的第一张 AFDX 模块,并返回句柄以供其他函数使

用。调用此函数同时对 AFDX模块复位。

函数原型

ViStatus _VI_FUNC EphAFDX_AutoConnectToFirst (ViUInt32 *cardnum);

参数说明

cardnum

[out] 模块句柄,由连接函数获取。

返回值

API_SUCCESS

API_FAILED

使用例程

ViUInt32 cardnum=0;

hr = EphAFDX_AutoConnectToFirst (&cardnum);

if((hr!=0)||(cardnum==0)) printf(“模块连接失败”);

函数名

参数类型

参数输入/输出方向

in:输入 out:输出

Page 8: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 8 页 共 120 页

第 5 章. 使用纲要

使用纲要主要对产品功能及软件功能进行一个概括性描述,使用户对产品的

主要性能指标,以及如何使用 API函数实现这些功能有一个整体的认知。

AFDXAFDXAFDXAFDX概述

AFDX(航空电子设备全双工交换以太网)规范是基于标准以太网协议进行

了一些改动,用来保证实时性能的规范协议。每一个通过 AFDX 通讯的航空电

子设备叫做终端系统(ES)。每个终端系统连接到一个 AFDX交换机。在一个系

统中可能会有多于一个 AFDX交换机存在,且这些交换机彼此相连。

不同于标准以太网,在 AFDX 中数据发送源端口是确定且是唯一的,而以

太网可以有多个发送源端口。

虚拟链路(VL)(VL)(VL)(VL)

虚拟链路(Virtual Links)定义了一帧数据的源和目标地址。一个单独的 ES

只能在一个 VL上进行发送。这表示,如果 ES7在 VL12 上进行发送,其他 ES

则不能在 VL12上进行发送。

一个 VL 可以被多个 ESs 接收。VL12 可以被 ES9、15 和 18 接收。AFDX

交换机包含的路由信息使这些变成可能。

Page 9: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 9 页 共 120 页

子虚拟链路(SubVLs)(SubVLs)(SubVLs)(SubVLs)

每个 VL可以定义最多 4个子链路。VL定义了时间(BAG)和路径,但是

没有描述数据属性。一个单独的 VL可以用来发送几种类型的数据。数据类型是

在子链路层面定义的。

每一个子链路由不相等的 UDP源和目标端口号定义,并且分配一个子链路

类型。AFDX规范定义了三种类型的子链路。每种类型的 SubVL 传输不同类型

的数据。

� Sample数据拥有固定格式并且通常为重复发送。例如:高度、维度、经

度;

� Queuing 数据没有固定格式,并且每次发送的数据可能会不同。例如:

数据库、视频;

� SAP数据与非航空电子设备的网络兼容。

AFDXAFDXAFDXAFDX帧结构

MACMACMACMACHeaderHeaderHeaderHeader

MAC头的第一个头,由三个部分组成:

� 目标地址(DestinationDestinationDestinationDestinationAddressAddressAddressAddress)MAC目标地址由 48位组成。高 32位

在所有网络中的 ESs中是相同的。这个地址是由网络系统分配的。低 16

位是 VL地址。

� 源地址(SourceSourceSourceSourceAddressAddressAddressAddress)MAC源地址是由 48位组成。AFDX 规范定

义高位的 24位和低位的 5位是固定数据。一个 16位宽度的部分用来给

每个主机分配不同的地址。3个位用来标识发送 AFDX包的网络,1为

使用 NetworkA发送,2为使用 NetworkB发送。

� TypeTypeTypeType FieldFieldFieldFieldMAC的 Type Field由 16位组成。固定数据为 0x0800。

IPIPIPIP HeaderHeaderHeaderHeader

IP 头是标准的以太网 IP 头,有少许的区别:头中的 TimeToLive 和

TypeOfService没有使用。TimeToLive一般设置为 1。

Page 10: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 10 页 共 120 页

UDPUDPUDPUDP HeaderHeaderHeaderHeader

UDP头是标准的以太网 UDP头,但是 checksum固定设置为 0。

PayloadPayloadPayloadPayload

负载数据包含 17-1471字节数据。

SequenceSequenceSequenceSequence NumberNumberNumberNumber((((序号))))

AFDX 与以太网之间的一个区别就是 AFDX 有一个字节的序号。最后一个

字节数据之后的一个字节数据为序号。序号不包含在 IP 头的字节个数

(ByteCount)中。

发送 ES在一条VL上每次发送AFDX包时,对序号加 1。如果 ES在几条VLs

进行发送,则每条 VL的序号是独立的。这样接收 ES就可以判断收到的数据是

否有丢失或者接收两次的情况。接收 ES也可以判断收到的 AFDX包是否与冗余

网络中收到的包相同,并决定是否丢弃它。

BandwidthBandwidthBandwidthBandwidthAllocationAllocationAllocationAllocationGapGapGapGap

为了保证实时性,AFDX在发送终端设置了时间约束。每一个 VL都只能在

设置的间隔中被发送。间隔从每毫秒一次到每 128 毫秒一次不等。合法值为

1,2,4,8,16,32,64和 128毫秒。这个周期被称为带宽分配间隔(BAG)。每一个 VL

都需要设置 BAG。

让我们看一个例子,一个终端发送 3个 VLs,一个 VL的 BAG设置为 2(A),

一个 VL的 BAG设置为 4(B),一个 VL的 BAG设置为 8(C)。这里,这 3个

VL可以以数种方式发送。下面的表格列举了 3种发送方式:

Page 11: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 11 页 共 120 页

第一种方式,所有的 VLs 同时开始发送。第二种方式,每一个 VL(除了第

一个)等待 1ms后发送。第三种方式,每一个 VL的启动被计划好,以便于网络

上的负载尽可能平衡的分布。

每一种方式都实现了 AFDX 协议的需求,尽管可以清晰的看出方式 3更好

的平衡了网络上的负载。恩菲特板卡自动决定发送顺序,同上述方式 1111。

软件功能描述

1111、关于 CardNumCardNumCardNumCardNum参数

恩菲特板卡的每个 API函数都有一个 CardNum参数(个别 API函数除

外),这是一个句柄参数,由板卡的连接函数函数获取后,供其他 API函数

使用。此参数非常重要,如果没有正确获得此参数,则表示软件没有获得对

硬件的控制权,那么使用其他 API函数对硬件进行操作是无效的。

使用此函数时,建议将其定义为一个静态的全局变量,并且将变量的初

始化值赋值为 0,这样就可以通过判断该值是否大于 0,来确定板卡连接函

数是否正确连接上板卡(即软件获得对硬件的控制权),如下所示:

static ViUInt32 CardNum=0;

hr = EphAFDX_AutoConnectToFirst (&CardNum);if((CardNum>0) && (hr==0)){

//板卡连接成功

}

注意:在程序中,只需要调用一次连接函数以获得 CardNum供其他函

数使用,不需要每次使用其它 API函数时,都调用一次连接函数。

2222、发送模式

模块采用 BAG模式进行发送。在这种模式下,你可以定义 VL和子

VL。对于每个 VL需要分配一个最大帧长度和 BAG。子 VL可以定义为

Sampling、Queuing和 SAP端口。你可以在多个终端仿真多个 VLs。

在这种模式下,帧发送的顺序是由板卡基于每个VL的BAG时间,使用

帧平衡算法确定的。模块使用符合 Arinc664 part7规范的循环策略发送子 VL

Page 12: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 12 页 共 120 页

的数据。

创建发送 VL的顺序如下:

1) 调用 Set_Xmt_Options函数设置发送方式(默认为循环发送方式)

2) 调用 Set_ES_Dest_Addr函数确定网络中的MAC目标地址;

3) 调用Create_XmtVL函数创建发送VL,为每个VL分配BAG时间;

4) 调用 Create_Sampling_XmtPort或 Create_Queuing_XmtPort或

Create_SAP_XmtPort函数为每个 VL创建子 VL(端口);

5) 调用Write_Sampling_Message或Write_Queuing_Message 或

Write_SAP_Message函数加载发送的数据;

6) 调用 StartStop_Xmt启动发送。

你可以实时改变发送的数据。

3333、接收模式

模块提供两种接收模式:VL和 Sequential Monitor(按顺序接收)模

式。

在 VL模式中,接收模块会检查发送过来的帧数据中的 VLID 和端口地

址,并按照 VLID 和端口地址存储数据。当 Queuing和 SAP消息按照多个片

段接收时,这些消息会被重组。你可以为这种消息类型分配多个 buffers。

Sample类型的帧不能大于一个 AFDX帧,因此 Sample帧从不会被分成片段。

对于 Sample端口,只分配一个 buffer,新的 Sample数据总是覆盖旧的 Sample

数据。

在 Sequential Monitor模式下,所有的帧按照接收的顺序进行存储。你可

以选择哪些帧基于 VLID进行存储,并且可以选择是否存储完整的一帧数据

还是只存储帧头。

VLVLVLVL模式下,创建接收 VLVLVLVL的顺序如下:

1) 调用 Set_Rcv_Mode设置接收为 VL模式

2) 调用 Set_ES_Dest_Addr函数确定网络中的MAC目标地址;

3) 调用 Create_RcvVL函数创建接收 VL;

4) 调用 Create_Sampling_RcvPort或 Create_Queuing_RcvPort或

Create_SAP_RcvPort函数为每个 VL创建子 VL(端口);

Page 13: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 13 页 共 120 页

5) 调用 StartStop_Rcv函数启动监视;

6) 调用 Get_Rcvd_Msg_Cnt函数检查接收到的消息个数;

7) 调用 Read_Queuing_Message、Read_Sampling_Message 或者

Read_SAP_Message 函数读数据。

SequentialSequentialSequentialSequential MonitorMonitorMonitorMonitor模式下,接收消息步骤如下:

1) 调用 Set_Rcv_Mode设置接收为Monitor模式

2) 在如下两种监视方式中选择一种:

� 如果要监视所有消息,调用 Set_Rcv_NoFilter函数(参数配置为

MONITORALL_MODE);

� 监视指定 VL,为每个想要监视的 VL调用 Set_Rcv_VLidActive

函数;

3) 调用 StartStop_Rcv函数启动监视;

4) 调用 Read_Seq_Monitor读取监视到的消息;

5) 调用 Find_MsginBuffer函数从读到的消息块中选择一个完整的消息;

6) 如果需要,可以调用 Convert_Header_Endian函数将读回的消息中的

MAC头从大端模式转换为小端模式。

7) 最后,您可以从读回的完整消息中解析出头、状态字、时标、和数

据。

4444、 NetworkNetworkNetworkNetwork ByteByteByteByte OrderingOrderingOrderingOrdering ConsiderationsConsiderationsConsiderationsConsiderations

AFDX与标准以太网相同,使用大端存储方式,这表示在一个字中,最

高位在低地址存储。

Intel处理器使用小端存储模式,在一个字中最高位在高地址存储。

数据按照它写入到发送 buffer中的顺序进行发送,并且会以相同的顺序

存储在接收 buffer中。你必须决定如何定义一个发送结构、显示的数据是否

需要交换字节顺序。

在使用创建 VLs、Ports函数时,设置与MAC头相关联的参数时,设置

值应该与主机计算机的字节存储格式一致。这些设置值会被 API按照需要进

行交换字节顺序。

Page 14: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 14 页 共 120 页

第 6 章. 函数概要说明

本节对 API函数进行概括性说明,使用户对 API函数有一个总体的了解。

系统函数

EphAFDX_AutoConnectToFirst PCI(e)\ cPCI(e)\PXI(e)\PC104+ 总

线类型板卡自动连接函数

EphAFDX_AutoConnectToBusSlot PCI(e)\ cPCI(e)\PXI(e)\PC104+ 总

线类型板卡指定连接函数

EphAFDX_USB_AutoConnectToFirst USB总线板卡自动连接函数

EphAFDX_USB_ConnectToUsbAddr USB总线板卡指定连接函数

EphAFDX_Close 关闭连接

EphAFDX_Reset 软件复位

EphAFDX_GetManuID 获取厂商 ID

EphAFDX_GetDevID 获取模块 ID

EphAFDX_GetVersion 获取版本号

EphAFDX_TimeGetString 将时间标转换成字符串

EphAFDX_StatusGetString 将错误代码转换成字符串

EphAFDX_RegisterFunction 注册中断回调函数(USB总线板

卡不支持该函数)

EphAFDX_Set_ES_Dest_Addr 设置MAC目标地址

EphAFDX_ResetVL 重新设置 VL

EphAFDX_Reset_TimeTag 复位时标(保留)

EphAFDX_Module_IsRunning 模块运行状态

EphAFDX_SetIp_TypeofService 设置 IP 头的 TypeofService值

EphAFDX _Alter_Headers 保留

EphAFDX _Get_Headers 保留

EphAFDX _Convert_Header_Endian 转换MAC头存储模式

EphAFDX _Get_PHY_State 获得网络 PHY接口状态

Page 15: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 15 页 共 120 页

EphAfdx_Set_PHY_Speed 设置网络通讯速率

发送功能函数发送功能函数发送功能函数发送功能函数

EphAFDX_Set_Xmt_Mode 设置发送模式(保留)

EphAFDX_Set_Xmt_Options 设置发送方式

EphAFDX_Create_XmtVL 创建发送 VL

EphAFDX_Create_SAP_XmtPort 创建 SAP发送端口

EphAFDX_Create_Queuing_XmtPort 创建 Queu发送端口

EphAFDX_Create_Sampling_XmtPort 创建 Samp发送端口

EphAFDX_StartStop_Xmt 启动停止发送

EphAFDX_Write_SAP_Message 写入 SAP端口发送的数据

EphAFDX_Write_Queuing_Message 写入 Queu端口发送的数据

EphAFDX_Write_Sampling_Message 写入 Samp端口发送的数据

EphAFDX_Get_Xmt_VLPktCount 返回指定VL已经发送的帧个数

EphAFDX_Get_Xmt_PktCount 返回指定通道发送的帧个数

EphAFDX_Set_Xmt_PktCount 设置发送的帧个数

EphAFDX_Set_Port_ActiveState 保留,设置端口有效

EphAFDX_Set_Port_Address 保留设置端口源地址目标地址

EphAFDX_Set_Xmt_Network 保留,选择发送网络

EphAFDX_Set_Xmt_Skew 保留,设置发送 Skew

错误注入函数错误注入函数错误注入函数错误注入函数

EphAFDX_Inject_SN_Err 插入 SN错误

EphAFDX_Inject_IPChecksum_Err 出入 IPChecksum错误

EphAFDX_Inject_Length_Err 插入长度错误

EphAFDX_Inject_FragmentSize_Err 保留

Page 16: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 16 页 共 120 页

VLVLVLVL接收功能函数接收功能函数接收功能函数接收功能函数

EphAFDX_Set_Rcv_Mode 设置接收模式

EphAFDX_Get_Rcv_Mode 获取接收模式

EphAFDX_Create_RcvVL 创建接收 VL

EphAFDX_Create_SAP_RcvPort 创建 SAP接收端口

EphAFDX_Create_Queuing_RcvPort 创建 Queu接收端口

EphAFDX_Create_Sampling_RcvPort 创建 Samp接收端口

EphAFDX_StartStop_Rcv 启动停止接收

EphAFDX_Read_SAP_Message 读 SAP端口数据

EphAFDX_Read_SAP_MessageEx 扩展方式读 SAP端口数据

EphAFDX_Read_Queuing_Message 读 Queuing端口数据

EphAFDX_Read_Queuing_MessageEx 扩展方式读 Queuing端口数据

EphAFDX_Read_Sampling_Message 读 Sampling端口数据

EphAFDX_Get_Rcvd_Msg_Cnt 返回接收到的消息个数

EphAFDX_Get_Rcv_PktCount 返回指定通道接收的帧个数

EphAFDX_Get_Rcvd_Chars_Read 保留,返回接收到的字节个数

EphAFDX_Get_Rcvd_VLMsg_Cnt 保留

SequentialSequentialSequentialSequential MonitorMonitorMonitorMonitor接收功能函数接收功能函数接收功能函数接收功能函数

EphAFDX_Set_Rcv_NoFilter 设置监视方式,全部监视/指定

VLID监视

EphAFDX_Set_Rcv_VLidActive 指定 VLID 监视

EphAFDX_Read_Seq_Monitor 读取收到的消息块

EphAFDX_Find_MsginBuffer 从收到的消息块中查找一个完

整的帧

IRIGIRIGIRIGIRIG功能函数(需板卡支持)功能函数(需板卡支持)功能函数(需板卡支持)功能函数(需板卡支持)

EphAFDX_IRIG_Config 支持 IRIG 信号源输入

Page 17: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 17 页 共 120 页

EphAFDX_IRIG_Calibration IRIG DAC校准

EphAFDX_IRIG_Valid 外部 IRIG 信号是否有效

Page 18: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 18 页 共 120 页

第 7 章. 函数详细说明

本章详细介绍 AFDX模块的 API函数及使用方法。

Page 19: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 19 页 共 120 页

EphAFDX_AutoConnectToFirstEphAFDX_AutoConnectToFirstEphAFDX_AutoConnectToFirstEphAFDX_AutoConnectToFirst

函数功能

注:PCIPCIPCIPCI、PCIePCIePCIePCIe、cPCIcPCIcPCIcPCI、cPCIecPCIecPCIecPCIe、PXIPXIPXIPXI、PXIePXIePXIePXIe、PC104+PC104+PC104+PC104+总线类型 AFDXAFDXAFDXAFDX板

卡使用该函数进行自动连接。

此函数自动连接到找到的第一张 AFDX 模块,并返回句柄以供其他函数使

用。调用此函数会对 AFDX模块进行复位。

此函数只需要调用一次即可,在调用其他函数时,需要使用此函数或

EphAFDX_AutoConnectToBusSlot 函数获得的板卡句柄。

当系统中只有一张 AFDX 模块时,使用此函数比使用指定连接函数

EphAFDX_AutoConnectToBusSlot 要简单,但是当系统中有多张 AFDX 模块时,

则必须使用指定连接函数 EphAFDX_AutoConnectToBusSlot 来获取板卡句柄。

函数原型

ViStatus _VI_FUNC EphAFDX_AutoConnectToFirst(ViUInt32 * cardnum);

参数说明

cardnum

[out] 模块句柄,成功获取后供其他函数使用。

返回值

API_SUCCESS

API_FAILED

API_PTR_ERR

API_INVALID_CARDNUM

使用例程

ViUInt32 cardnum=0;

hr = EphAFDX_AutoConnectToFirst(&cardnum);

if((hr!=0)||(cardnum==0))

printf(“模块连接失败”);

Page 20: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 20 页 共 120 页

EphEphEphEphAFDXAFDXAFDXAFDX_AutoConnectToBusSlot_AutoConnectToBusSlot_AutoConnectToBusSlot_AutoConnectToBusSlot

函数功能

注:PCIPCIPCIPCI、PCIePCIePCIePCIe、cPCIcPCIcPCIcPCI、cPCIecPCIecPCIecPCIe、PXIPXIPXIPXI、PXIePXIePXIePXIe、PC104+PC104+PC104+PC104+总线类型AFDXAFDXAFDXAFDX板

卡使用该函数进行指定连接。

当系统中有多张板卡时,需要根据总线号和设备号连接到指定板卡,并返回

句柄以供其他函数使用。调用此函数同时对AFDX模块进行软件复位。

模块总线号和设备号可以通过计算机设备管理器查询。打开设备管理器,在

AFDX模块属性中可以看到模块信息,如下图所示,“PCI Slot 3 (PCI 总线 3、

设备 4、功能 0)”,此时的总线号是3,设备号是4。

此函数只需要调用一次即可,在调用其他函数时,需要使用此函数或

EphAFDX_AutoConnectToFirst函数获得的板卡句柄。

函数原型

ViStatus _VI_FUNC EphAFDX_AutoConnectToBusSlot(

ViUInt16 busNum,

ViUInt16 deviceNum,

Page 21: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 21 页 共 120 页

ViUInt32 *cardnum);

参数说明

busNum

[in] 模块总线号。

deviceNum

[in] 模块设备号。

cardnum

[out] 模块句柄,成功获取后供其他函数使用。

返回值

API_SUCCESS

API_FAILED

API_PTR_ERR

API_INVALID_CARDNUM

使用例程

ViStatus hr = 0;

ViUInt16 busNum = 3;

ViUInt16 deviceNum = 4;

hr =EphAFDX_AutoConnectToBusSlot(busNum, deviceNum, &cardnum);

if((hr==0) && (cardnum>0))

printf(“connect success”)

Page 22: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 22 页 共 120 页

EphAFDX_USB_AutoConnectToFirstEphAFDX_USB_AutoConnectToFirstEphAFDX_USB_AutoConnectToFirstEphAFDX_USB_AutoConnectToFirst

函数功能

注:USBUSBUSBUSB总线类型 AFDXAFDXAFDXAFDX板卡使用此函数进行自动连接。

此函数自动连接到找到的第一张 AFDX通讯模块,并返回句柄以供其他函

数使用。调用此函数会对 AFDX通讯模块进行复位。

此函数只需要调用一次即可,在调用其他函数时,需要使用此函数或

EphAFDX_USB_ConnectToUsbAddr函数获得的板卡句柄。

当系统中只有一张 AFDX通讯模块时,使用此函数更简单,但是当系统中

有多张 AFDX通讯模块时,则必须使用指定连接函数

EphAFDX_USB_ConnectToUsbAddr来获取板卡句柄。

函数原型

ViStatus _VI_FUNC EphAFDX_USB_AutoConnectToFirst(

ViUInt32 *cardnum);

参数说明

cardnum

[out] 模块句柄,成功获取后供其他函数使用。

返回值

API_SUCCESS

API_FAILED

API_PTR_ERR

API_INVALID_CARDNUM

使用例程

ViUInt32 cardnum=0;

hr = EphCan_USB_AutoConnectToFirst(&cardnum);

if((hr != API_SUCCESS)||(cardnum==0))

MessagePopup (“提示”, “模块连接失败”);

Page 23: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 23 页 共 120 页

EphAFDX_USB_ConnectToUsbAddrEphAFDX_USB_ConnectToUsbAddrEphAFDX_USB_ConnectToUsbAddrEphAFDX_USB_ConnectToUsbAddr

函数功能

注:USBUSBUSBUSB总线类型 AFDXAFDXAFDXAFDX板卡使用此函数进行指定连接。

当系统中有多张板卡时,需要根据 USB地址连接到指定板卡,并返回句柄

以供其他函数使用。调用此函数同时对 AFDX通讯模块进行软件复位。

模块 USB地址可以通过计算机设备管理器查询。打开设备管理器,在 AFDX

通讯模块属性中可以看到模块详细信息,如下图所示,

“USB\VID_41F8&PID_1281\6&944C330&0&2”,最后一位&2表示当前 USB

设备的地址为 2。

此函数只需要调用一次即可,在调用其他函数时,需要使用此函数或

EphAFDX_USB_ AutoConnectToFirst函数获得的板卡句柄。

函数原型

ViStatus _VI_FUNC EphAFDX_USB_ConnectToUsbAddr(

ViUInt8 UsbAddr,

ViUInt32 *cardnum);

Page 24: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 24 页 共 120 页

参数说明

UsbAddr

[in] 模块使用的USB地址

cardnum

[out] 模块句柄,成功获取后供其他函数使用。

返回值

API_SUCCESS

API_FAILED

API_PTR_ERR

API_INVALID_CARDNUM

使用例程

ViUInt32 cardnum=0;

hr = EphAFDX_USB_ConnectToUsbAddr (3, &cardnum);

if((hr != API_SUCCESS)||(cardnum==0))

MessagePopup (“提示”, “模块连接失败”);

Page 25: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 25 页 共 120 页

EphEphEphEphAFDXAFDXAFDXAFDX_Reset_Reset_Reset_Reset

函数功能

此函数用于软件复位。在初始化函数EphAFDX_Initialize中默认已调用一次

此函数。

函数原型

ViStatus _VI_FUNC EphAFDX_Reset(ViUInt32 cardnum);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

返回值

API_SUCCESS

API_FAILED

Page 26: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 26 页 共 120 页

EphAFDX_ResetVLEphAFDX_ResetVLEphAFDX_ResetVLEphAFDX_ResetVL

函数功能

复位VL,复位后,需要重新创建VL。

注:在使用Create_XmtVLCreate_XmtVLCreate_XmtVLCreate_XmtVL、Create_RcvVLCreate_RcvVLCreate_RcvVLCreate_RcvVL重新创建VLVLVLVL时,必须先调用此

函数。

函数原型

ViStatus _VI_FUNC EphAFDX_ResetVL(ViUInt32 cardnum);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

Page 27: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 27 页 共 120 页

EphAFDX_Reset_TimeTagEphAFDX_Reset_TimeTagEphAFDX_Reset_TimeTagEphAFDX_Reset_TimeTag

函数功能

复位时标。该函数保留。

模块有一个48位时标,初始化模块时,会对时标进行复位,如果在使用过程

中需要对时标进行复位,可以使用此函数。

函数原型

ViStatus _VI_FUNC EphAFDX_Reset_TimeTag(ViUInt32 cardnum);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

Page 28: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 28 页 共 120 页

EphEphEphEphAFDXAFDXAFDXAFDX_GetManuID_GetManuID_GetManuID_GetManuID

函数功能

此函数获取厂商ID,恩菲特的厂商ID固定为0x41F8。

函数原型

ViStatus _VI_FUNC EphAFDX_GetManuID(

ViUInt32 cardnum,

ViUInt32 *manuID);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

manuID

[out] 厂商ID。默认厂商ID:0x41F8。

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

Page 29: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 29 页 共 120 页

EphEphEphEphAFDXAFDXAFDXAFDX_GetDevID_GetDevID_GetDevID_GetDevID

函数功能

此函数获取模块ID。

函数原型

ViStatus _VI_FUNC EphAFDX_GetDevID(

ViUInt32 cardnum,

ViUInt32 *devID);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

devID

[out] 模块ID,如0x6281。

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

Page 30: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 30 页 共 120 页

EphAFDX_GetVersionEphAFDX_GetVersionEphAFDX_GetVersionEphAFDX_GetVersion

函数功能

此函数获取模块硬件版本号和软件版本号。

函数原型

ViStatus _VI_FUNC EphAFDX_GetVersion(

ViUInt32 cardnum,

ViUInt32 *Version,

ViUInt32 *sVersion);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Version

[out] 硬件版本号,0x0100表示版本为V1.00。

sVersion

[out] 软件版本号,0x0100表示版本为V1.00。

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

Page 31: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 31 页 共 120 页

EphEphEphEphAFDXAFDXAFDXAFDX_Close_Close_Close_Close

函数功能

此函数用于关闭连接,并释放连接模块时申请的系统资源。该函数在程序退

出或关闭模块功能的时候使用。

函数原型

ViStatus _VI_FUNC EphAFDX_Close(ViUInt32 cardnum);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

Page 32: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 32 页 共 120 页

EphAFDX_StatusGetStringEphAFDX_StatusGetStringEphAFDX_StatusGetStringEphAFDX_StatusGetString

函数功能

将其他API函数的返回值转换为字符串,用于查看函数返回值信息。

函数原型

ViStatus _VI_FUNC EphAFDX_StatusGetString (

ViStatus hr,

char *pString);

参数说明

hr

[in] 函数返回值。

pString

[out] 字符串信息。详细信息请查看附录2:宏定义。

返回值

API_SUCCESS

API_FAILED

Page 33: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 33 页 共 120 页

EphAFDX_RegisterFunctionEphAFDX_RegisterFunctionEphAFDX_RegisterFunctionEphAFDX_RegisterFunction

函数功能

注册中断回调函数。

函数原型

ViStatus _VI_FUNC EphAFDX_RegisterFunction(

ViUInt32 cardnum,

API_INT_FIFO *sIntFIFO1,

ViUInt32 flag);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

sIntFIFO1

[in] 中断服务参数,可参考附录1:数据结构

flag

[in] 1:注册中断 0:注销中断

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

使用例程

API_INT_FIFO sIntFIFO1;

ViInt32 _stdcall demo_Msg_watch_function(

ViUInt32 cardnum,

ViUInt16 chnum,

struct api_int_fifo *sIntFIFO);/*声明回调函数*/

sIntFIFO1.function = demo_Msg_watch_function;

sIntFIFO1.iPriority = THREAD_PRIORITY_ABOVE_NORMAL;

sIntFIFO1.FilterType = EVENT_MSG_CMPLT_RCV;

Page 34: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 34 页 共 120 页

//注册中断回调函数

EphAFDX_RegisterFunction(cardnum, &sIntFIFO1,1);

ViInt32 _stdcall demo_Msg_watch_function(

ViUInt32 cardnum,

ViUInt16 chnum,

struct api_int_fifo *sIntFIFO)

{

ViStatus hr=0;

ViInt32 tail; // FIFO Tail index

tail = sIntFIFO->tail_index;

while ( tail != sIntFIFO->head_index )

{

//NETA发送中断

if (sIntFIFO->fifo[tail].event_type&EVENT_MSG_CMPLT_RCV)

{

}

tail++; // Next entry

sIntFIFO->tail_index = tail; // Save the index

}//while

return API_SUCCESS;

}

Page 35: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 35 页 共 120 页

EphAFDX_Set_Xmt_ModeEphAFDX_Set_Xmt_ModeEphAFDX_Set_Xmt_ModeEphAFDX_Set_Xmt_Mode

函数功能

保留。设置发送模式为BAG_MODE、BUS_LIST_MODE。

注:恩菲特AFDX模块仅支持BAG模式。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Xmt_Mode(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 mode);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

mode

[in] 保留。

返回值

API_SUCCESS

API_FAILED

Page 36: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 36 页 共 120 页

EphAFDX_Set_ES_Dest_AddrEphAFDX_Set_ES_Dest_AddrEphAFDX_Set_ES_Dest_AddrEphAFDX_Set_ES_Dest_Addr

函数功能

Set_ES_Dest_Addr设置MAC目标地址的高32位。这32位是由系统分配并且

被网络中的所有终端共用。

发送模块会把该值放到所有发送帧的MAC头中。接收模块会检查接收到的

帧中的MAC头中的该值,然后根据该值过滤非期望ES目标地址的帧数据,在

Sequential Monitor接收模式下,如果不关心ES目标地址而接收所有帧,则设置ES

地址为0。在VL接收模式下,如果不关心ES目标地址而接收所有帧,则在创建接

收VL时,允许接收错误ES目标地址使能即可。

注:

� 有效ES目标地址的bit40和bit41位为1,相当于在MACdestAddr参数中要

有0300 0000 H。

� 该函数在模块运行中调用无效。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_ES_Dest_Addr(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 XmtRcvFlag,

ViUInt32 MACdestAddr);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

XmtRcvFlag

[in] 发送接收标记,TYPE_XMT(0000H):发送 TYPE_RCV(0001H):

接收。

MACdestAddr

[in] MAC目标地址的高32位。

Page 37: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 37 页 共 120 页

返回值

API_SUCCESS

API_FAILED

API_INVALID_CARDNUM

API_INVALID_CH

Page 38: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 38 页 共 120 页

EphAFDX_Set_Xmt_OptionsEphAFDX_Set_Xmt_OptionsEphAFDX_Set_Xmt_OptionsEphAFDX_Set_Xmt_Options

函数功能

Set_Xmt_Options函数用来设置模块发送方式,第一种方式为当有新的数据

时发送,第二种方式为循环发送。

一般情况下,Sampling数据需要按照设置的周期进行发送而不管有没有新的

数据。对于Queuing和SAP数据,如果模块发送数据的速度比你更新的速度快,

则可能会导致错误的数据发送出去。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Xmt_Options(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 Options);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

Options

[in] 以下参数可以用OR标记连接

TRANS_ALL_ONCETRANS_ALL_ONCETRANS_ALL_ONCETRANS_ALL_ONCE(0000000000000000 HHHH),单次发送写入模块的每帧数据,

直到写入新的数据后,才会再次发送写入的

数据。

TRANS_SAMPLING_LOOPTRANS_SAMPLING_LOOPTRANS_SAMPLING_LOOPTRANS_SAMPLING_LOOP(0001000100010001 HHHH),循环发送Sampling端口的

数据,即使没有新的数据写入到发送模块。

TRANS_QUEUING_LOOPTRANS_QUEUING_LOOPTRANS_QUEUING_LOOPTRANS_QUEUING_LOOP(0002000200020002 HHHH),循环发送Queuing端口的数

据,即使没有新的数据写入到发送模块。

TRANS_SAP_LOOPTRANS_SAP_LOOPTRANS_SAP_LOOPTRANS_SAP_LOOP(0004000400040004 HHHH),循环发送SAP端口的数据,即使

没有新的数据写入到发送模块。

TRANS_ALL_LOOPTRANS_ALL_LOOPTRANS_ALL_LOOPTRANS_ALL_LOOP(0007000700070007 HHHH),根据BAG时间循环发送所有端口

Page 39: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 39 页 共 120 页

的数据,即使没有新的数据写入到发送

模块。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 40: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 40 页 共 120 页

EphAFDX_Create_XmtVLEphAFDX_Create_XmtVLEphAFDX_Create_XmtVLEphAFDX_Create_XmtVL

函数功能

Create_XmtVL创建一个虚拟链路(VL)用来发送帧并且定义该链路的属性。

注:

� 该函数在模块运行时无效

函数原型

ViStatus _VI_FUNC EphAFDX_Create_XmtVL(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 VLID,

ViUInt16 MACsrcAddr,

ViUInt32 ipSrcAddr,

ViUInt16 BAG,

ViUInt16 lMax,

ViUInt16 NetABSelect,

ViUInt16 * vlidHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

VLID

[in] The 16-bit Virtual Link ID。

MACsrcAddr

[in] 终端设备(ES)源地址的Bit8~Bit23位,该地址由网络系统设置。

ipSrcAddr

[in] IP源地址的Bit0~Bit31。

BAG

[in] Bandwidth Allocation Gap,同一条VL中连续两帧的第一个bit间的最

Page 41: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 41 页 共 120 页

小时间间隔(ms)。有效设置值如下:

BAG_1_MS(0001 H): 1ms

BAG_2_MS(0002 H): 2ms

BAG_4_MS(0003 H): 4ms

BAG_8_MS(0004 H): 8ms

BAG_16_MS(0005 H): 16ms

BAG_32_MS(0006 H): 32ms

BAG_64_MS(0007 H): 64ms

BAG_128_MS(0008 H): 128ms

lMax

[in] 该条VL传输的帧数据的最大帧长度(字节),范围64~1518。最大帧

长度包括头、数据、SN和校验

NetABSelect

[in] 冗余方式设置,有效参数设置如下:

TRANS_DUALREDUNDANTTRANS_DUALREDUNDANTTRANS_DUALREDUNDANTTRANS_DUALREDUNDANT(0000000000000000 HHHH):该条VL的帧同时在NetA

和NetB上进行发送。

TRANS_NETWORKATRANS_NETWORKATRANS_NETWORKATRANS_NETWORKA(0001000100010001 HHHH):该VL的帧仅在NetA上进行发送。

TRANS_NETWORKTRANS_NETWORKTRANS_NETWORKTRANS_NETWORKBBBB(0002000200020002 HHHH): 该VL的帧仅在NetB上进行发送

vlidHandle

[out] 返回的VL句柄。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_INVALID_PARA

API_FAILED

Page 42: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 42 页 共 120 页

EphAFDX_Create_SAP_XmtPortEphAFDX_Create_SAP_XmtPortEphAFDX_Create_SAP_XmtPortEphAFDX_Create_SAP_XmtPort

函数功能

Create_SAP_XmtPort创建一个子VL端口用来发送SAP数据。你可以为每个

VLID定义最多四个端口。VL在发送时刻到来时轮流发送每个端口的数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Create_SAP_XmtPort(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt16 udpSourceAddr,

ViUInt16 maxPayloadSize,

ViUInt16 numBufs,

ViUInt16 *portHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_XmtVL函数获得。

udpSourceAddr

[in] 与该端口相关联的UDP源地址。该端口发送每帧数据时,会将该数

据放在每帧数据的UDP头中发出。

maxPayloadSize

[in] 每个发送buffer的最大数据量。SAP数据最大负载量为8192个字节。

Write_SAP_Message函数中的 numChars参数设置值不能超过

maxPayloadSize。

numBufs

[in] 该端口的buffer个数。最大可分配32个buffer。每个buffer包含一个独

立的消息。分配越多的buffer,在模块发送完已经写入的消息之前,

你会有越多的时间去写一条消息。

portHandle

Page 43: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 43 页 共 120 页

[out] 返回的SAP端口句柄。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_LEN

API_INVALID_PARA

API_NO_PORT_ENTRY

API_BAD_VLHANDEL

API_NOT_ENOUGH_SPACE

API_FAILED

Page 44: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 44 页 共 120 页

EphAFDX_Create_Queuing_XmtPortEphAFDX_Create_Queuing_XmtPortEphAFDX_Create_Queuing_XmtPortEphAFDX_Create_Queuing_XmtPort

函数功能

Create_Queuing_XmtPort创建一个子VL端口用来发送Queuing数据。你可以

为每个VLID定义最多四个端口。VL在发送时刻到来时轮流发送每个端口的数

据。

函数原型

ViStatus _VI_FUNC EphAFDX_Create_Queuing_XmtPort(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt16 udpSourceAddr,

ViUInt16 udpDestAddr,

ViUInt16 maxPayloadSize,

ViUInt16 numBufs,

ViUInt16 *portHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_XmtVL函数获得。

udpSourceAddr

[in] 与该端口相关联的UDP源地址。该端口发送每帧数据时,会将该数

据放在每帧数据的UDP头中发出。

udpDestAddr

[in] 与该端口相关联的UDP目标地址。该端口发送每帧数据时,会将该

数据放在每帧数据的UDP头中发出

maxPayloadSize

[in] 每个发送buffer的最大数据量。Queuing数据最大负载量为8192个字

节。Write_Queuing_Message函数中的numChars参数设置值不能超

过maxPayloadSize。

Page 45: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 45 页 共 120 页

numBufs

[in] 该端口的buffer个数。最大可分配32个buffer。每个buffer包含一个独

立的消息。分配越多的buffer,在模块发送完已经写入的消息之前,

你会有越多的时间去写一条消息。

portHandle

[out] 返回的Queuing端口句柄。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_LEN

API_INVALID_PARA

API_NO_PORT_ENTRY

API_BAD_VLHANDEL

API_NOT_ENOUGH_SPACE

API_FAILED

Page 46: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 46 页 共 120 页

EphAFDX_Create_Sampling_XmtPortEphAFDX_Create_Sampling_XmtPortEphAFDX_Create_Sampling_XmtPortEphAFDX_Create_Sampling_XmtPort

函数功能

Create_Sampling_XmtPort创建一个子VL端口用来发送Sampling数据。你可以

为每个VLID定义最多四个端口。VL在发送时刻到来时轮流发送每个端口的数

据。

函数原型

ViStatus _VI_FUNC EphAFDX_Create_Sampling_XmtPort(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt16 udpSourceAddr,

ViUInt16 udpDestAddr,

ViUInt16 payloadSize,

ViUInt16 *portHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_XmtVL函数获得。

udpSourceAddr

[in] 与该端口相关联的UDP源地址。该端口发送每帧数据时,会将该数

据放在每帧数据的UDP头中发出。

udpDestAddr

[in] 与该端口相关联的UDP目标地址。该端口发送每帧数据时,会将该

数据放在每帧数据的UDP头中发出

payloadSize

[in] 该端口发送的数据大小(字节),Sample端口总是发送相同大小的

帧。最大负载数据为SAMPMAXPAYLOADSIZE(1471 bytes)。

portHandle

[out] 返回的Sample端口句柄。

Page 47: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 47 页 共 120 页

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_LEN

API_NO_PORT_ENTRY

API_BAD_VLHANDEL

API_NOT_ENOUGH_SPACE

API_FAILED

Page 48: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 48 页 共 120 页

EphAFDX_Set_Rcv_ModeEphAFDX_Set_Rcv_ModeEphAFDX_Set_Rcv_ModeEphAFDX_Set_Rcv_Mode

函数功能

该函数用来设置接收方式,支持VL或Sequential Monitor两种方式。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Rcv_Mode(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 mode);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

Mode

[in] VLID_MON_MODE(0000 H): VL模式

SEQUENTIAL_MON_MODE(0001 H):顺序监听模式

返回值

API_SUCCESS

API_INVALID_PARA

API_INVALID_CH

API_INVALID_CARDNUM

Page 49: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 49 页 共 120 页

EphAFDX_Get_Rcv_ModeEphAFDX_Get_Rcv_ModeEphAFDX_Get_Rcv_ModeEphAFDX_Get_Rcv_Mode

函数功能

该函数用来获取接收方式,支持VL或Sequential Monitor两种方式。

函数原型

ViStatus _VI_FUNC EphAFDX_Get_Rcv_Mode(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 *mode);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。。

Ch

[in] 通道号,0~1。

mode

[out] VLID_MON_MODE(0000 H): VL模式

SEQUENTIAL_MON_MODE(0001 H):顺序监听模式

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_FAILED

Page 50: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 50 页 共 120 页

EphAFDX_Create_RcvVLEphAFDX_Create_RcvVLEphAFDX_Create_RcvVLEphAFDX_Create_RcvVL

函数功能

创建一个虚拟链路(VL)用来接收帧并且定义该链路的属性。

注:

� 该函数在模块运行时无效

函数原型

ViStatus _VI_FUNC EphAFDX_Create_RcvVL(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 VLID,

ViUInt16 MACsrcAddr,

ViUInt32 ipSrcAddr,

ViUInt32 refreshRate,

ViUInt32 options,

ViUInt16 * vlidHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

VLID

[in] The 16-bit Virtual Link ID。

MACsrcAddr

[in] 接收终端设备(ES)源地址的Bit8~Bit23位,发送帧中与该地址匹配的

帧将被接收。该地址由网络系统定义。

当前版本中,根据ESESESES源地址过滤功能保留。

ipSrcAddr

[in] IP源地址的Bit0~Bit31。发送帧中与该地址匹配的帧将被接收。该地

址由网络系统定义。

Page 51: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 51 页 共 120 页

refreshRate

[in] 双冗余模式时,设置接收网络A、B之间的延时,如果网络AB收到

的帧延迟大于该值,则认为是新的一帧,如果小于该值,则认为是

相同的一帧。单位us,一般设置为500us。

options

[in] 冗余方式设置,下面参数只能选择其中一个:

RECV_DUALREDUNDANTRECV_DUALREDUNDANTRECV_DUALREDUNDANTRECV_DUALREDUNDANT(00000000000000000000000000000000 HHHH):双冗余,同时记录

NETWORKA和NETWORKB接收的数据,但不会记录冗余数据。

RECV_NETWORKARECV_NETWORKARECV_NETWORKARECV_NETWORKA(00000001000000010000000100000001 HHHH): 只记录NETA接收的数据。

RECV_NETWORKBRECV_NETWORKBRECV_NETWORKBRECV_NETWORKB(00000002000000020000000200000002 HHHH): 只记录NETB接收的数据。

RECV_BOTHRECV_BOTHRECV_BOTHRECV_BOTH(00000003000000030000000300000003 HHHH):同时记录NETWORKA和NETWORKB

接收的数据,此模式将会记录双冗余数据包两次。

下面参数可以采用“或”的方式多个存在:

RECV_INTRPTRECV_INTRPTRECV_INTRPTRECV_INTRPT(00000004H00000004H00000004H00000004H):保留。收到一个完整的数据包后产

生中断。

RECV_INTRPT_ON_ERRORRECV_INTRPT_ON_ERRORRECV_INTRPT_ON_ERRORRECV_INTRPT_ON_ERROR(00000008000000080000000800000008 HHHH):保留。收到一个完整

的有错误的数据包后产生中断

RECV_HEADER_ONLYRECV_HEADER_ONLYRECV_HEADER_ONLYRECV_HEADER_ONLY(00000010000000100000001000000010 HHHH): 接收到的数据包,只记录

头,不记录数据。

RECV_STOPRECV_STOPRECV_STOPRECV_STOP(00000020000000200000002000000020 HHHH):保留。记录一个数据包后停止监听。

RECV_ERREN_MACCORERECV_ERREN_MACCORERECV_ERREN_MACCORERECV_ERREN_MACCORE(40000000400000004000000040000000HHHH):MAC控制核检测数据

有问题容错使能。

RECV_ERREN_SNRECV_ERREN_SNRECV_ERREN_SNRECV_ERREN_SN(20000000200000002000000020000000HHHH):SN错误容错使能,表示能接收SN

错误的数据。

RECV_ERREN_UDP_DESRECV_ERREN_UDP_DESRECV_ERREN_UDP_DESRECV_ERREN_UDP_DES(10000000100000001000000010000000HHHH): UDP目标地址错误容错

使能,表示能接收UDP目标地址错误的数据。

RECV_ERREN_UDP_SRCRECV_ERREN_UDP_SRCRECV_ERREN_UDP_SRCRECV_ERREN_UDP_SRC(08000000080000000800000008000000HHHH): UDP源地址错误容错使

能,表示能接收UDP源地址错误的数据

RECV_ERREN_IPCKSUMRECV_ERREN_IPCKSUMRECV_ERREN_IPCKSUMRECV_ERREN_IPCKSUM(04000000040000000400000004000000HHHH):ipchecksun容错接收使能 ,

Page 52: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 52 页 共 120 页

表示能接收ipchecksum错误的数据。

RECV_ERREN_IP_SRCRECV_ERREN_IP_SRCRECV_ERREN_IP_SRCRECV_ERREN_IP_SRC(02000000020000000200000002000000HHHH):IP源地址错误容错使能,

表示能接收IP源地址错误的数据。

RECV_ERREN_NO_VLLISTRECV_ERREN_NO_VLLISTRECV_ERREN_NO_VLLISTRECV_ERREN_NO_VLLIST(01000000010000000100000001000000HHHH):保留。无效VLID容错

使能,表示能接收没有创建在VL列表中的数据。

RECV_ERREN_MAC_TYPERECV_ERREN_MAC_TYPERECV_ERREN_MAC_TYPERECV_ERREN_MAC_TYPE(00800000008000000080000000800000HHHH):MAC帧类型容错使能 ,

表示能够接收mac帧中不是IPV4的数据(0x0800)的数据。

RECV_ERREN_MAC_DESRECV_ERREN_MAC_DESRECV_ERREN_MAC_DESRECV_ERREN_MAC_DES((((00400000004000000040000000400000H)H)H)H):MAC目标地址错误容错

使能,表示能接收MAC数据中目标地址地bit40~bit39不为"11"的数

据。

VlidHandle

[out] 返回的VL句柄。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_NO_VL_ENTRY

API_FAILED

Page 53: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 53 页 共 120 页

EphAFDX_Create_SAP_RcvPortEphAFDX_Create_SAP_RcvPortEphAFDX_Create_SAP_RcvPortEphAFDX_Create_SAP_RcvPort

函数功能

Create_SAP_RcvPort创建一个子VL端口用来接收SAP数据。与该端口相关联

的数据是基于UDP目标地址的。SAP接收端口接收所有UDP端口和所有IP源地址

的帧。你可以通过检查与这个帧相关联的IP和UDP头,来确定是哪个IP和UDP源

发送的帧。

每个VLID最多定义4个端口。

函数原型

ViStatus _VI_FUNC EphAFDX_Create_SAP_RcvPort(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt16 udpDestAddr,

ViUInt16 maxPayloadSize,

ViUInt16 numBufs,

ViUInt16 * portHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_RcvVL函数获得。

udpDestAddr

[in] 与该端口相关联的UDP目标地址。存储到该端口buffer中的帧数据必

须包含这个地址。

maxPayloadSize

[in] 该端口监视的一条消息的最大长度(字节)。该长度只表示有效负

载数据长度。最大为8192字节。

numBufs

[in] 该端口的buffer个数。最大可分配32个buffer。每个buffer存储一个独

立的消息。分配越多的buffer,在这条消息被新的消息覆盖之前,你

Page 54: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 54 页 共 120 页

会有更多的时间去读这条消息。

portHandle

[out] 返回的SAP端口句柄。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_LEN

API_INVALID_PARA

API_NO_PORT_ENTRY

API_BAD_VLHANDEL

API_NOT_ENOUGH_SPACE

API_FAILED

Page 55: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 55 页 共 120 页

EphAFDX_Create_Queuing_RcvPortEphAFDX_Create_Queuing_RcvPortEphAFDX_Create_Queuing_RcvPortEphAFDX_Create_Queuing_RcvPort

函数功能

Create_Queuing_RcvPort创建一个子VL端口用来接收Queuing数据。与该端口

相关联的数据是基于UDP源地址和目标地址的。

每个VLID最多定义4个端口。

函数原型

ViStatus _VI_FUNC EphAFDX_Create_Queuing_RcvPort(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt16 udpSourceAddr,

ViUInt16 udpDestAddr,

ViUInt16 maxPayloadSize,

ViUInt16 numBufs,

ViUInt16 * portHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_RcvVL函数获得。

udpSourceAddr

[in] 与该端口相关联的UDP源地址。存储到该端口buffer中的帧数据必须

包含这个地址。

udpDestAddr

[in] 与该端口相关联的UDP目标地址。存储到该端口buffer中的帧数据必

须包含这个地址。

maxPayloadSize

[in] 该端口监视的一条消息的最大长度(字节)。该长度只表示有效负

载数据长度。最大为8192字节。

Page 56: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 56 页 共 120 页

numBufs

[in] 该端口的buffer个数。最大可分配32个buffer。每个buffer存储一个独

立的消息。分配越多的buffer,在这条消息被新的消息覆盖之前,你

会有更多的时间去读这条消息。

portHandle

[out] 返回的Queuing端口句柄。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_LEN

API_INVALID_PARA

API_NO_PORT_ENTRY

API_BAD_VLHANDEL

API_NOT_ENOUGH_SPACE

API_FAILED

Page 57: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 57 页 共 120 页

EphAFDX_Create_Sampling_RcvPortEphAFDX_Create_Sampling_RcvPortEphAFDX_Create_Sampling_RcvPortEphAFDX_Create_Sampling_RcvPort

函数功能

Create_Sampling_RcvPort创建一个子VL端口用来接收Sampling数据。该端口

相关联的数据是基于UDP源地址和目标地址的。

每个VLID最多定义4个端口。

函数原型

ViStatus _VI_FUNC EphAFDX_Create_Sampling_RcvPort(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt16 udpSourceAddr,

ViUInt16 udpDestAddr,

ViUInt16 payloadSize,

ViUInt16 * portHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_RcvVL函数获得。

udpSourceAddr

[in] 与该端口相关联的UDP源地址。存储到该端口buffer中的帧数据必须

包含这个地址。

udpDestAddr

[in] 与该端口相关联的UDP目标地址。存储到该端口buffer中的帧数据必

须包含这个地址。

payloadSize

[in] 该端口接收的数据大小(字节),Sample端口总是传输相同大小的

帧。最大负载数据为SAMPMAXPAYLOADSIZE(1471 bytes)。

portHandle

[out] 返回的Sample端口句柄。

Page 58: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 58 页 共 120 页

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_LEN

API_NO_PORT_ENTRY

API_BAD_VLHANDEL

API_NOT_ENOUGH_SPACE

API_FAILED

Page 59: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 59 页 共 120 页

EphAFDX_StartStop_RcvEphAFDX_StartStop_RcvEphAFDX_StartStop_RcvEphAFDX_StartStop_Rcv

函数功能

StartStop_Rcv启动VL进行数据监视。在Sequential Monitor模式下,调用该函

数复位所有buffer指针,所有之前记录的数据将会丢失。

函数原型

ViStatus _VI_FUNC EphAFDX_StartStop_Rcv (

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 flag);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

flag

[in] 1:启动监视 0:停止监视。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 60: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 60 页 共 120 页

EphAFDX_StartStop_XmtEphAFDX_StartStop_XmtEphAFDX_StartStop_XmtEphAFDX_StartStop_Xmt

函数功能

StartStop_Xmt启动VL进行数据发送。

函数原型

ViStatus _VI_FUNC EphAFDX_StartStop_Xmt (

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 flag);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

flag

[in] 1:启动发送 0:停止发送。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 61: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 61 页 共 120 页

EphAFDX_Write_SAP_MessageEphAFDX_Write_SAP_MessageEphAFDX_Write_SAP_MessageEphAFDX_Write_SAP_Message

函数功能

为指定的SAP端口写入要发送的新数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Write_SAP_Message(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt16 numChars,

ViUInt32 ipDest,

ViUInt16 udpDest,

ViUInt8 *buffer);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_SAP_XmtPort获得。

numChars

[in] 写入到发送 buffer中的数据的字节个数,该值不能超过由

Create_SAP_XmtPort 函数创建该端口时指定的maxPayloadSize值。

ipDest

[in] IP目标地址,该值在发送时会被放在IP头中进行发送。对于SAP端口 ,

该值是不固定的,可能每次写的值都会改变。

udpDest

[in] UDP目标地址。该值在发送时会被放在UDP头中进行发送。对于SAP

端口,该值是不固定的,可能每次写的值都会改变。

buffer

[in] 发送数据buffer,模块会添加适当的头信息。

返回值

Page 62: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 62 页 共 120 页

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_VLHANDEL

API_BAD_PORTHANDEL

API_INVALID_LEN

API_XMTBUF_BUSY

API_FAILED

Page 63: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 63 页 共 120 页

EphAFDX_Write_Queuing_MessageEphAFDX_Write_Queuing_MessageEphAFDX_Write_Queuing_MessageEphAFDX_Write_Queuing_Message

函数功能

为指定的Queuing端口写入要发送的新数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Write_Queuing_Message(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt16 numChars,

ViUInt8 * buffer);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_Queuing_XmtPort获得。

numChars

[in] 写入到发送 buffer中的数据的字节个数,该值不能超过由

Create_Queuing_XmtPort函数创建该端口时指定的maxPayloadSize

值。

buffer

[in] 发送数据buffer,模块会添加适当的头信息。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_VLHANDEL

API_BAD_PORTHANDEL

API_INVALID_LEN

API_XMTBUF_BUSY

API_FAILED

Page 64: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 64 页 共 120 页

EphAFDX_Write_Sampling_MessageEphAFDX_Write_Sampling_MessageEphAFDX_Write_Sampling_MessageEphAFDX_Write_Sampling_Message

函数功能

为指定的Sampling端口写入要发送的新数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Write_Sampling_Message(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt8 * buffer);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_Sampling_XmtPort获得。

buffer

[in] 发送数据buffer,模块会添加适当的头信息。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_PORTHANDEL

API_INVALID_LEN

API_FAILED

Page 65: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 65 页 共 120 页

EphAFDX_Read_SAP_MessageEphAFDX_Read_SAP_MessageEphAFDX_Read_SAP_MessageEphAFDX_Read_SAP_Message

函数功能

Read_SAP_Message函数从一个SAP端口读数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Read_SAP_Message(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt16 SN_Flag,

ViUInt16 * rdCount,

ViUInt8 * buffer);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_SAP_RcvPort函数获得。

SN_Flag,

[in] 1:读回的数据含SN 0:读回的数据不含SN。

rdCount

[out] buffer中读回的数据个数(字节)。

buffer

[out] 读回的数据。该buffer大小应该分配为VLHEADERSIZE +

maxPayloadSize字节,buffer中的数据包含头和数据,存储结构为

struct RCV_VL_STRUCT中定义的结构(可参考附录结构体定义)。

VLHEADERSIZE在头文件中定义,maxPayloadSize在创建端口时

由Create_SAP_RcvPort确定。

数据按照下面格式存储:

返回值

12字节自定义头 42字节MAC头 负载数据

Page 66: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 66 页 共 120 页

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_PORTHANDEL

API_BAD_VLHANDEL

API_NO_NEW_DATA

API_NOT_ENOUGH_SPACE

API_INVALID_LEN

API_FAILED

使用例程

ViUInt8 SapBuf[SAP_BUFSIZE +VLHEADERSIZE]={0};struct RCV_VL_STRUCT VlData;EPAFDX_TIME curtime;char msg[256]={0};

hr=EphAFDX_Read_SAP_Message(cardnum, rcvPortHandle,SN_Flag,&rdCount,SapBuf);

if (hr == API_SUCCESS){memcpy(&VlData, SapBuf, RCV_SELFHEADER+PACKET_HEADER_SIZE);

VlData.pData =(ViUInt8*)(SapBuf+RCV_SELFHEADER+PACKET_HEADER_SIZE);

payloadSize=VlData.length-PACKET_HEADER_SIZE;

curtime.topuseconds = VlData .ttagHi;curtime.microseconds = VlData .ttagLo;EphAFDX_TimeGetString(&curtime,msg);

wrtStat = fwrite(VlData.pData, 1, payloadSize, dstFile);}

Page 67: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 67 页 共 120 页

EphAFDX_Read_SAP_MessageExEphAFDX_Read_SAP_MessageExEphAFDX_Read_SAP_MessageExEphAFDX_Read_SAP_MessageEx

函数功能

Read_SAP_MessageEx函数从一个SAP端口读数据,并且包含每个帧的帧头

信息。

函数原型

ViStatus _VI_FUNC EphAFDX_Read_SAP_MessageEx(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt16 * rdCount,

ViUInt8 * buffer,

struct PacketInf packetInf[6],

int *PacketCnt);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_SAP_RcvPort函数获得。

rdCount

[out] buffer中读回的数据个数(字节)。

buffer

[out] 读回的数据。该buffer大小应该分配为VLHEADERSIZE +

maxPayloadSize字节,buffer中的数据包含头和数据,存储结构为

struct RCV_VL_STRUCT中定义的结构(可参考附录结构体定义)。

VLHEADERSIZE在头文件中定义,maxPayloadSize在创建端口时

由Create_SAP_RcvPort确定。

数据按照下面格式存储:

packetInf

12字节自定义头 42字节MAC头 负载数据

Page 68: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 68 页 共 120 页

[out] 帧信息,因为一条消息最大负载大小为8000字节,所以最多包含6

帧网络帧,该结构体包含了每一帧的头部信息:时间、SN、错误表

示,具体说明请参考附录1。

PacketCnt

[out] 返回的该条消息中的帧个数,因为一条消息最大负载大小为8000字

节,所以最多包含6帧网络帧。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_PORTHANDEL

API_BAD_VLHANDEL

API_NO_NEW_DATA

API_NOT_ENOUGH_SPACE

API_INVALID_LEN

API_FAILED

使用例程

ViUInt8 SapBuf[SAP_BUFSIZE +VLHEADERSIZE]={0};struct RCV_VL_STRUCT VlData;EPAFDX_TIME curtime;struct PacketInf packetInf[6];char msg[256]={0};int PacketCnt=0;

hr= EphAFDX_Read_SAP_MessageEx (cardnum, rcvPortHandle,&rdCount,SapBuf, packetInf, &PacketCnt);

if (hr == API_SUCCESS){memcpy(&VlData, SapBuf, RCV_SELFHEADER+PACKET_HEADER_SIZE);

VlData.pData =(ViUInt8*)(SapBuf+RCV_SELFHEADER+PACKET_HEADER_SIZE);

payloadSize=VlData.length-PACKET_HEADER_SIZE;

curtime.topuseconds = VlData .ttagHi;

Page 69: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 69 页 共 120 页

curtime.microseconds = VlData .ttagLo;EphAFDX_TimeGetString(&curtime,msg);

wrtStat = fwrite(VlData.pData, 1, payloadSize, dstFile);

//获取读回的消息中每条重组帧的帧头信息

for (int i=0; i<PacketCnt; i++){

curtime.microseconds = packetInf[i].ttagLo;curtime.topuseconds = packetInf[i].ttagHi;EphAFDX_TimeGetString(&curtime, time);

sprintf(txtTemp, "LEN=%d TIME=%s SN=%d ",packetInf[i].length,time,packetInf[i].SN);

}}

Page 70: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 70 页 共 120 页

EphAFDX_Read_Queuing_MessageEphAFDX_Read_Queuing_MessageEphAFDX_Read_Queuing_MessageEphAFDX_Read_Queuing_Message

函数功能

Read_Queuing_Message函数从一个Queuing端口读数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Read_Queuing_Message(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt16 SN_Flag,

ViUInt16 * rdCount,

ViUInt8 * buffer);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_Queuing_RcvPort函数获得。

SN_Flag,

[in] 1:读回的数据含SN 0:读回的数据不含SN。

rdCount

[out] buffer中读回的数据个数(字节)。

buffer

[out] 读回的数据。该buffer大小应该分配为VLHEADERSIZE +

maxPayloadSize字节,buffer中的数据包含头和数据,存储结构为

struct RCV_VL_STRUCT中定义的结构(可参考附录结构体定义)。

VLHEADERSIZE在头文件中定义,maxPayloadSize在创建端口时

由Create_Queuing_RcvPort确定。

数据按照下面格式存储:

返回值

12字节自定义头 42字节MAC头 负载数据

Page 71: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 71 页 共 120 页

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_PORTHANDEL

API_BAD_VLHANDEL

API_NO_NEW_DATA

API_NOT_ENOUGH_SPACE

API_INVALID_LEN

API_FAILED

使用例程

ViUInt8 QueuBuf[QUEU_BUFSIZE +VLHEADERSIZE]={0};struct RCV_VL_STRUCT VlData;EPAFDX_TIME curtime;char msg[256]={0};

hr=EphAFDX_Read_Queuing_Message(cardnum, rcvPortHandle,SN_Flag,&rdCount,QueuBuf);

if (hr == API_SUCCESS){memcpy(&VlData,quenBuf, RCV_SELFHEADER+PACKET_HEADER_SIZE);

VlData.pData =(ViUInt8*)( QueuBuf +RCV_SELFHEADER+PACKET_HEADER_SIZE);

payloadSize=VlData.length-PACKET_HEADER_SIZE;curtime.topuseconds = VlData .ttagHi;curtime.microseconds = VlData .ttagLo;EphAFDX_TimeGetString(&curtime,msg);

wrtStat = fwrite(VlData.pData, 1, payloadSize, dstFile);}

Page 72: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 72 页 共 120 页

EphAFDX_Read_Queuing_MessageEphAFDX_Read_Queuing_MessageEphAFDX_Read_Queuing_MessageEphAFDX_Read_Queuing_MessageExExExEx

函数功能

Read_Queuing_MessageEx函数从一个Queuing端口读数据。并且包含每个帧

的帧头信息。

函数原型

ViStatus _VI_FUNC EphAFDX_Read_Queuing_MessageEx(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt16 * rdCount,

ViUInt8 * buffer,

struct PacketInf packetInf[6],

int *PacketCnt);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_Queuing_RcvPort函数获得。

SN_Flag,

[in] 1:读回的数据含SN 0:读回的数据不含SN。

rdCount

[out] buffer中读回的数据个数(字节)。

buffer

[out] 读回的数据。该buffer大小应该分配为VLHEADERSIZE +

maxPayloadSize字节,buffer中的数据包含头和数据,存储结构为

struct RCV_VL_STRUCT中定义的结构(可参考附录结构体定义)。

VLHEADERSIZE在头文件中定义,maxPayloadSize在创建端口时

由Create_Queuing_RcvPort确定。

数据按照下面格式存储:

Page 73: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 73 页 共 120 页

packetInf

[out] 帧信息,因为一条消息最大负载大小为8000字节,所以最多包含6

帧网络帧,该结构体包含了每一帧的头部信息:时间、SN、错误表

示,具体说明请参考附录1。

PacketCnt

[out] 返回的该条消息中的帧个数,因为一条消息最大负载大小为8000字

节,所以最多包含6帧网络帧。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_BAD_PORTHANDEL

API_BAD_VLHANDEL

API_NO_NEW_DATA

API_NOT_ENOUGH_SPACE

API_INVALID_LEN

API_FAILED

使用例程

ViUInt8 Buf[SAP_BUFSIZE +VLHEADERSIZE]={0};struct RCV_VL_STRUCT VlData;EPAFDX_TIME curtime;struct PacketInf packetInf[6];char msg[256]={0};int PacketCnt=0;

hr= EphAFDX_Read_Queuing _MessageEx (cardnum, rcvPortHandle,&rdCount,Buf, packetInf, &PacketCnt);

if (hr == API_SUCCESS){memcpy(&VlData, Buf, RCV_SELFHEADER+PACKET_HEADER_SIZE);

12字节自定义头 42字节MAC头 负载数据

Page 74: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 74 页 共 120 页

VlData.pData =(ViUInt8*)( Buf +RCV_SELFHEADER+PACKET_HEADER_SIZE);

payloadSize=VlData.length-PACKET_HEADER_SIZE;

curtime.topuseconds = VlData .ttagHi;curtime.microseconds = VlData .ttagLo;EphAFDX_TimeGetString(&curtime,msg);

wrtStat = fwrite(VlData.pData, 1, payloadSize, dstFile);

//获取读回的消息中每条重组帧的帧头信息

for (int i=0; i<PacketCnt; i++){

curtime.microseconds = packetInf[i].ttagLo;curtime.topuseconds = packetInf[i].ttagHi;EphAFDX_TimeGetString(&curtime, time);

sprintf(txtTemp, "LEN=%d TIME=%s SN=%d ",packetInf[i].length,time,packetInf[i].SN);

}}

Page 75: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 75 页 共 120 页

EphAFDX_Read_Sampling_MessageEphAFDX_Read_Sampling_MessageEphAFDX_Read_Sampling_MessageEphAFDX_Read_Sampling_Message

函数功能

Read_Sampling_Message函数从一个Sampling端口读数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Read_Sampling_Message(

ViUInt32 cardnum,

ViUInt16 portHandle,

ViUInt8 * buffer,

ViUInt16 *ifFreshness);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄,由Create_Sampling_RcvPort函数获得。

buffer

[out] 读回的数据。该 buffer大小应该分配为 VLHEADERSIZE +

payloadSize字节,buffer中的数据包含头和数据,存储结构为

struct RCV_VL_STRUCT中定义的结构(可参考附录结构体定义)。

VLHEADERSIZE在头文件中定义,payloadSize在创建端口时由

Create_Sampling_RcvPort函数中定义的payloadSize参数决定。

数据按照下面格式存储:

ifFreshness

[out] 刷新标记。指示该条消息是刷新的数据还是旧的数据。1:刷新

返回值

API_SUCCESS

12字节自定义头 42字节MAC头 负载数据

Page 76: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 76 页 共 120 页

API_INVALID_CARDNUM

API_BAD_PORTHANDEL

API_BAD_VLHANDEL

API_NO_NEW_DATA

API_FAILED

使用例程

ViUInt8 sampBuf[SAMPMAXPAYLOADSIZE+RCV_SELFHEADER]={0};struct RCV_VL_STRUCT VlData;EPAFDX_TIME curtime;char msg[256]={0};

hr=EphAFDX_Read_Sampling_Message(cardnum, rcvPortHandle, sampBuf,&ifFreshness);

if (hr == API_SUCCESS){memcpy(&VlData,sampBuf, RCV_SELFHEADER+PACKET_HEADER_SIZE);

VlData.pData =(ViUInt8*)( sampBuf + RCV_SELFHEADER+PACKET_HEADER_SIZE);

payloadSize= VlData.length- PACKET_HEADER_SIZE-1;

curtime.topuseconds = VlData .ttagHi;curtime.microseconds = VlData .ttagLo;EphAFDX_TimeGetString(&curtime,msg);

wrtStat = fwrite(VlData.pData, 1, payloadSize, dstFile);}

Page 77: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 77 页 共 120 页

EphAFDX_Get_Xmt_VLPktCountEphAFDX_Get_Xmt_VLPktCountEphAFDX_Get_Xmt_VLPktCountEphAFDX_Get_Xmt_VLPktCount

函数功能

该函数返回指定VL从VL创建后,已经发送的帧个数。

函数原型

ViStatus _VI_FUNC EphAFDX_Get_Xmt_VLPktCount(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt32 * numPackets);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄,由Create_XmtVL函数获得。

numPackets

[out] 返回的已发送帧个数。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_PTR_ERR

API_FAILED

Page 78: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 78 页 共 120 页

EphAFDX_Get_Rcv_PktCountEphAFDX_Get_Rcv_PktCountEphAFDX_Get_Rcv_PktCountEphAFDX_Get_Rcv_PktCount

函数功能

该函数返回指定通道已经接收的帧个数。在每次重新启动接收后,该计数会

清零。

函数原型

ViStatus _VI_FUNC EphAFDX_Get_Xmt_PktCount(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 * count);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

count

[out] 返回的已接收帧个数。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 79: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 79 页 共 120 页

EphAFDX_Get_Xmt_PktCountEphAFDX_Get_Xmt_PktCountEphAFDX_Get_Xmt_PktCountEphAFDX_Get_Xmt_PktCount

函数功能

该函数返回指定通道已经发送的帧个数。

函数原型

ViStatus _VI_FUNC EphAFDX_Get_Xmt_PktCount(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 * count);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

count

[out] 返回的已发送帧个数。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 80: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 80 页 共 120 页

EphAFDX_Set_Xmt_PktCountEphAFDX_Set_Xmt_PktCountEphAFDX_Set_Xmt_PktCountEphAFDX_Set_Xmt_PktCount

函数功能

该函数设置模块在发送多少帧数据后停止发送。

注:该函数设置的发送个数为网络A和B一共发送的帧个数。比如当双冗余

发送时,设置发送20个帧数据,则表示网络A和网络B各自发送10帧数据后停止。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Xmt_PktCount(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 count);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

count

[in] 发送指定个数的帧数据,如果设置为0,则模块一直发送直到调用

StartStop_Xmt函数停止发送。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 81: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 81 页 共 120 页

EphAFDX_Get_Rcvd_Msg_CntEphAFDX_Get_Rcvd_Msg_CntEphAFDX_Get_Rcvd_Msg_CntEphAFDX_Get_Rcvd_Msg_Cnt

函数功能

Get_Rcvd_Msg_Cnt函数返回模块复位后记录的消息或帧的个数。在VL模式

下,这个函数返回消息个数。在Sequential Monitor模式下,函数返回帧个数。返

回的个数不包含被过滤掉的消息。

函数原型

ViStatus _VI_FUNC EphAFDX_Get_Rcvd_Msg_Cnt(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 * msgCount);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

msgCount

[out] 返回的消息个数。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 82: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 82 页 共 120 页

EphAFDX_TimeGetStringEphAFDX_TimeGetStringEphAFDX_TimeGetStringEphAFDX_TimeGetString

函数功能

转换时间戳结构到字符串用于显示,转换后的字符串为两种类型格式,如下

所示。

(1)3:15:26.6791——(天)时:分:秒:微秒。

函数原型

ViStatus _VI_FUNC EphAFDX_TimeGetString(

EPAFDX_TIME * curtime,

char * string);

参数说明

curtime

[out] 当前时间,结构体定义参考附录1数据结构。

string

[out] 时间字符串,格式(1)3:15:26.6791——(天)时:分:秒:微秒。

返回值

API_SUCCESS

API_FAILED

Page 83: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 83 页 共 120 页

EphAFDX_Set_Port_ActiveStateEphAFDX_Set_Port_ActiveStateEphAFDX_Set_Port_ActiveStateEphAFDX_Set_Port_ActiveState

函数功能

保留。

该函数设置端口状态:有效或无效。

如果端口无效,则不发送数据,模块依据循环策略继续发送下一个有效端口 。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Port_ActiveState(

ViUInt16 portHandle,

ViUInt16 state);

参数说明

portHandle

[in] 端口句柄,可以由

Create_Sampling_XmtPor、

Create_Queuing_XmtPort、

Create_SAP_XmtPort获得。

state

[in] 0:有效(端口创建后默认为有效状态)。

1:无效,端口设置无效后不再发送数据,除非再次调用此函数将

state设置为0。

返回值

API_SUCCESS

API_FAILED

Page 84: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 84 页 共 120 页

EphAFDX_Set_Port_AddressEphAFDX_Set_Port_AddressEphAFDX_Set_Port_AddressEphAFDX_Set_Port_Address

函数功能

保留。

该函数改变指定端口的源端口号和目的端口号。

注:

� 发送端口有效

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Port_Address(

ViUInt16 portHandle,

ViUInt16 srcPort,

ViUInt16 dstPort);

参数说明

portHandle

[in] 端口句柄,可以由

Create_Sampling_XmtPor、

Create_Queuing_XmtPort、

Create_SAP_XmtPort获得。

srcPort

[in] UDP头中的源端口号。

dstPort

[in] UDP头中的目标端口号

返回值

API_SUCCESS

API_FAILED

Page 85: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 85 页 共 120 页

EphAFDX_Set_Xmt_NetworkEphAFDX_Set_Xmt_NetworkEphAFDX_Set_Xmt_NetworkEphAFDX_Set_Xmt_Network

函数功能

保留。

该函数用来选择指定VL发送帧数据的网络。当VL创建后可以使用此函数改

变VL的发送网络。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Xmt_Network(

ViUInt16 vlidHandle,

ViUInt16 flags);

参数说明

vlidHandle

[in] VL句柄,由Create_XmtVL函数获取

flags

[in] 有效参数设置如下:

TRANS_DUALREDUNDANTTRANS_DUALREDUNDANTTRANS_DUALREDUNDANTTRANS_DUALREDUNDANT(0000000000000000 HHHH):该条VL的帧同时在NetA

和NetB上进行发送。

TRANS_NETWORKATRANS_NETWORKATRANS_NETWORKATRANS_NETWORKA(0001000100010001 HHHH): 该条VL的帧仅在NetA上进行发

送。

TRANS_NETWORKTRANS_NETWORKTRANS_NETWORKTRANS_NETWORKBBBB(0002000200020002 HHHH): 该条VL的帧仅在NetB上进行发

送 。

返回值

API_SUCCESS

API_FAILED

Page 86: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 86 页 共 120 页

EphAFDX_Set_Xmt_SkewEphAFDX_Set_Xmt_SkewEphAFDX_Set_Xmt_SkewEphAFDX_Set_Xmt_Skew

函数功能

保留。

该函数用来设置双冗余传输中NetworkA和NetworkB之间的skew。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Xmt_Skew(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt32 first,

ViUInt32 skew);

参数说明

cardnum

[in] 板卡句柄,有连接函数获取。

vlidHandle

[in] VL句柄,由Create_XmtVL函数获取。

First

[in] 首先发送的网络:

XMT_NETA_FIRST(0001H) 网络A先发

XMT_NETB_FIRST(0000H) 网络B先发

skew

[in] 单位us,每个网络在启动发送后延迟设定的时间后开始发送。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_PARA

API_PTR_ERR

API_BAD_VLHANDEL

API_FAILED

Page 87: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 87 页 共 120 页

EphAFDX_Get_Rcvd_Chars_ReadEphAFDX_Get_Rcvd_Chars_ReadEphAFDX_Get_Rcvd_Chars_ReadEphAFDX_Get_Rcvd_Chars_Read

函数功能

保留。

Get_Rcvd_Chars_Read函数返回模块复位后记录的数据的个数(字节)。返

回的个数不包含被过滤掉的消息。

函数原型

ViStatus _VI_FUNC EphAFDX_Get_Rcvd_Chars_Read(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 * highCount,

ViUInt32 * lowCount);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

highCount

[out] 返回的数据个数的高32bit。

lowCount

[out] 返回的数据个数的低32bit

返回值

API_SUCCESS

API_FAILED

Page 88: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 88 页 共 120 页

EphAFDX_Set_Rcv_VLidActiveEphAFDX_Set_Rcv_VLidActiveEphAFDX_Set_Rcv_VLidActiveEphAFDX_Set_Rcv_VLidActive

函数功能

在顺序监视模式下,设置哪一条VLID需要监视。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Rcv_VLidActive(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 vlid,

ViUInt16 options,

ViUInt16 *vlidHandle);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

vlid

[in] The 16-bit Virtual Link ID。

options

[in] 冗余方式设置,下面参数只能选择其中一个:

RECV_NETWORKARECV_NETWORKARECV_NETWORKARECV_NETWORKA(0001000100010001 HHHH): 只记录NETWORKA接收的数据。

RECV_NETWORKBRECV_NETWORKBRECV_NETWORKBRECV_NETWORKB(0002000200020002 HHHH): 只记录NETWORKB接收的数据。

RECV_BOTHRECV_BOTHRECV_BOTHRECV_BOTH(0003000300030003 HHHH):同时记录NETWORKA和NETWORKB接

收的数据。

下面参数可以采用“或”的方式多个存在:

RECV_HEADER_ONLYRECV_HEADER_ONLYRECV_HEADER_ONLYRECV_HEADER_ONLY((((0010001000100010H)H)H)H):仅接收头

RECV_VLP_INACTIVERECV_VLP_INACTIVERECV_VLP_INACTIVERECV_VLP_INACTIVE(8000800080008000HHHH): 设置指定VLID无效,该VLID

的数据将不被监视

Page 89: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 89 页 共 120 页

vlidHandle

[out] 保留。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_BADMODE

API_FAILED

Page 90: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 90 页 共 120 页

EphAFDX_Set_Rcv_NoFilterEphAFDX_Set_Rcv_NoFilterEphAFDX_Set_Rcv_NoFilterEphAFDX_Set_Rcv_NoFilter

函数功能

Set_Rcv_NoFilter函数设置监视所有VL还是监视指定VLID。

函数原型

ViStatus _VI_FUNC EphAFDX_Set_Rcv_NoFilter(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt16 options);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

options

[in] 0000:仅监视Set_Rcv_VLidActive函数设置的指定VLID的数据(默认)。

MONITORALL_MODEMONITORALL_MODEMONITORALL_MODEMONITORALL_MODE(0001000100010001 HHHH): 监视所有VLs。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_BADMODE

API_INVALID_PARA

API_FAILED

Page 91: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 91 页 共 120 页

EphAFDX_Read_Seq_MonitorEphAFDX_Read_Seq_MonitorEphAFDX_Read_Seq_MonitorEphAFDX_Read_Seq_Monitor

函数功能

在顺序监视模式下,使用此函数读多个收到的消息。可以使用

Find_MsginBuffer函数查找完整的一条消息。

函数原型

ViStatus _VI_FUNC EphAFDX_Read_Seq_Monitor(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt8 * buffer,

ViUInt16 bufferSize,

ViUInt16 * numMsgs);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

buffer

[out] 读回的数据buffer,该参数作为Find_MsginBuffer的输入参数。

bufferSize

[in] buffer大小,字节。

numMsgs

[out] buffer中读回的消息个数。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_NO_NEW_DATA

API_FAILED

Page 92: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 92 页 共 120 页

EphAFDX_Find_MsginBufferEphAFDX_Find_MsginBufferEphAFDX_Find_MsginBufferEphAFDX_Find_MsginBuffer

函数功能

顺序监视模式时,从接收到的消息buffer中查找完整的一帧数据。在调用此

函数之前,需要调用Read_Seq_Monitor函数来获取监视到的数据。

函数原型

ViStatus _VI_FUNC EphAFDX_Find_MsginBuffer(

ViUInt32 cardnum,

ViUInt8 * buffer,

ViUInt16 msgNum,

struct RCV_VL_STRUCT *pSeqDATA);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

buffer

[out] 指向Read_Seq_Monitor函数的buffer指针。

msgNum

[in] buffer中的消息序号。1表示buffer中第一条消息,2表示buffer中第二

条消息,等等。

有效值:1~ numMsgs。numMsgs是函数Find_MsginBuffer的输出参数 。

pSeqDATA

[out] 查找到的完整消息。struct RCV_VL_STRUCT结构参考附录结构体

定义

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_PARA

API_INVALID_LEN

Page 93: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 93 页 共 120 页

API_FAILED

程序实例

#define RCVBUFFSIZE 20000 //enough space for several messagesViUInt8 seqBuf[RCVBUFFSIZE]={0};struct RCV_VL_STRUCT SeqDATA;

hr = EphAFDX_Read_Seq_Monitor(cardnum, Ch, seqBuf,RCVBUFFSIZE, &numMsgs);

if (hr==API_SUCCESS){

for(int i=1; i<=numMsgs; i++){EphAFDX_Find_MsginBuffer(cardnum, seqBuf, i ,&SeqDATA);}

PacketSize = SeqDATA.length;payloadSize=SeqDATA.length-RCV_SELFHEADER-PACKET_HEADER_SIZE-1;

curtime.topuseconds = SeqDATA.ttagHi;curtime.microseconds = SeqDATA.ttagLo;EphAFDX_TimeGetString(&curtime,msg);

wrtStat = fwrite(SeqDATA.pData, 1, payloadSize, dstFile);}

}

Page 94: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 94 页 共 120 页

EphAFDX_Module_IsRunningEphAFDX_Module_IsRunningEphAFDX_Module_IsRunningEphAFDX_Module_IsRunning

函数功能

返回模块运行状态。

函数原型

ViStatus _VI_FUNC EphAFDX_Module_IsRunning(

ViUInt32 cardnum,

ViUInt16 Ch,

int *pIsRunning);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

pIsRunning

[out] 1:模块正在运行 0:停止状态

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_FAILED

Page 95: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 95 页 共 120 页

EphAFDX_Inject_SN_ErrEphAFDX_Inject_SN_ErrEphAFDX_Inject_SN_ErrEphAFDX_Inject_SN_Err

函数功能

给指定VL插入SN错误。

函数原型

ViStatus _VI_FUNC EphAFDX_Inject_SN_Err(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt32 errType);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄

errType

[in] 以下参数只能选择一种进行设置:

XMT_ERR_SN_ADD1_NETA(00000001H)仅NETA插入错误, SN

固定+1模式

XMT_ERR_SN_ADD1_NETB(00010000H) 仅NETB插入错误,SN

固定+1模式

XMT_ERR_SN_ADD1(00010001H)NETA、NETB插入错误:SN

固定+1模式

XMT_ERR_SN_ADD2_NETA(00000002H)仅NETA插入错误, SN

固定+2模式

XMT_ERR_SN_ADD2_NETB(00020000H)仅NETB插入错误 SN

固定+2模式

XMT_ERR_SN_ADD2(00020002H)NETA、NETB插入错误:SN

固定+2模式

以下参数可以通过“或”的方式多个存在:

XMT_ERR_SN_ONCE(10001000H)以上错误仅注入一次。

Page 96: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 96 页 共 120 页

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_PTR_ERR

API_BAD_VLHANDEL

API_INVALID_PARA

API_FAILED

程序实例

hr=EphAFDX_Inject_SN_Err(cardnum,0,XMT_ERR_SN_ADD1|XMT_ERR_SN_ONCE);

Page 97: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 97 页 共 120 页

EphAFDX_Inject_IPChecksum_ErrEphAFDX_Inject_IPChecksum_ErrEphAFDX_Inject_IPChecksum_ErrEphAFDX_Inject_IPChecksum_Err

函数功能

给指定VL注入IPChecksum错误。

函数原型

ViStatus _VI_FUNC EphAFDX_Inject_IPChecksum_Err(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt32 errType);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄

errType

[in] 以下参数只能选择一种进行设置:

XMT_ERR_IPCKSUM_ADD1_NETA(00000004H)仅NETA插入错

误,IpCksum固定+1模式

XMT_ERR_IPCKSUM_ADD1_NETB (00040000H) 仅NETB插入错

误,IpCksum固定+1模式

XMT_ERR_IPCKSUM_ADD1(00040004H)NETA、NETB插入错

误:IpCksum固定+1模式

XMT_ERR_IPCKSUM_ADD2_NETA(00000008H)仅NETA插入错

误,IpCksum固定+2模式

XMT_ERR_IPCKSUM_ADD2_NETB(00080000)仅NETB插入错误

IpCksum固定+2模式

XMT_ERR_IPCKSUM_ADD2(00080008)NETA、NETB插入错误:

IpCksum固定+2模式

以下参数可以通过“或”的方式多个存在:

XMT_ERR_IPCKSUM_ONCE(20002000H)以上错误仅注入一次

Page 98: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 98 页 共 120 页

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_PTR_ERR

API_BAD_VLHANDEL

API_INVALID_PARA

API_FAILED

程序实例

hr=EphAFDX_Inject_IPChecksum_Err(cardnum,0,XMT_ERR_IPCKSUM_ADD1|XMT_ERR_IPCKSUM_ONCE);

Page 99: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 99 页 共 120 页

EphAFDX_Inject_Length_ErrEphAFDX_Inject_Length_ErrEphAFDX_Inject_Length_ErrEphAFDX_Inject_Length_Err

函数功能

指定VL插入长度错误。

函数原型

ViStatus _VI_FUNC EphAFDX_Inject_Length_Err(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt32 errType,

ViUInt16 length);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄

errType

[in] 以下参数只能选择一种进行设置:

XMT_ERR_LEN_ADD1_NETA(00000010H)仅NETA插入错误,

IpCksum固定+1模式

XMT_ERR_LEN_ADD1_NETB (0x00100000H) 仅NETB插入错误,

IpCksum固定+1模式

XMT_ERR_LEN_ADD1(00100010H)NETA、NETB插入错误:

IpCksum固定+1模式

XMT_ERR_LEN_SUB1_NETA(00000020H)仅NETA插入错误,

IpCksum固定+2模式

XMT_ERR_LEN_SUB1_NETB( 00200000H)仅NETB插入错误

IpCksum固定+2模式

XMT_ERR_LEN_SUB1(00200020H)NETA、NETB插入错误:

IpCksum固定+2模式

以下参数可以通过“或”的方式多个存在

Page 100: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 100 页 共 120 页

XMT_ERR_LEN_ONCE(40004000H):以上错误仅发送一次。

length

[in] 保留。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_PTR_ERR

API_BAD_VLHANDEL

API_INVALID_PARA

API_FAILED

Page 101: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 101 页 共 120 页

EphAFDX_Inject_FragmentSize_ErrEphAFDX_Inject_FragmentSize_ErrEphAFDX_Inject_FragmentSize_ErrEphAFDX_Inject_FragmentSize_Err

函数功能

保留。

函数原型

ViStatus _VI_FUNC EphAFDX_Inject_FragmentSize_Err(

ViUInt32 cardnum,

ViUInt16 vlidHandle,

ViUInt32 errType);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

vlidHandle

[in] VL句柄

errType

[in] 保留。

返回值

API_SUCCESS

API_FAILED

Page 102: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 102 页 共 120 页

EphAfdx_SetIp_TypeofServiceEphAfdx_SetIp_TypeofServiceEphAfdx_SetIp_TypeofServiceEphAfdx_SetIp_TypeofService

函数功能

设置发送帧中IP头的TypeofService值。

函数原型

ViStatus _VI_FUNC EphAfdx_SetIp_TypeofService(

ViUInt32 cardnum,

ViUInt8 typeofService);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

typeofService

[in] typeofService

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_PTR_ERR

API_FAILED

Page 103: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 103 页 共 120 页

EphAfdx_Alter_HeadersEphAfdx_Alter_HeadersEphAfdx_Alter_HeadersEphAfdx_Alter_Headers

函数功能

保留。

函数原型

ViStatus _VI_FUNC EphAfdx_Alter_Headers(

ViUInt32 cardnum,

ViUInt16 portHandle,

struct ETH_Headers * header);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄

header

[in] MAC 头

返回值

API_SUCCESS

API_FAILED

Page 104: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 104 页 共 120 页

EphAfdx_Get_HeadersEphAfdx_Get_HeadersEphAfdx_Get_HeadersEphAfdx_Get_Headers

函数功能

保留。

函数原型

ViStatus _VI_FUNC EphAfdx_Get_Headers(

ViUInt32 cardnum,

ViUInt16 portHandle,

struct ETH_Headers * header);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

portHandle

[in] 端口句柄。

header

[in] MAC头。

返回值

API_SUCCESS

API_FAILED

Page 105: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 105 页 共 120 页

EphAfdx_Convert_Header_EndianEphAfdx_Convert_Header_EndianEphAfdx_Convert_Header_EndianEphAfdx_Convert_Header_Endian

函数功能

转换MAC头的大小端模式。

函数原型

ViStatus _VI_FUNC EphAfdx_Convert_Header_Endian(

struct ETH_Headers * header);

参数说明

header

[in] MAC头

返回值

API_SUCCESS

API_FAILED

Page 106: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 106 页 共 120 页

EphAfdx_Get_PHY_StateEphAfdx_Get_PHY_StateEphAfdx_Get_PHY_StateEphAfdx_Get_PHY_State

函数功能

获得NETA、NETB的网络PHY接口状态。

函数原型

ViStatus _VI_FUNC EphAfdx_Get_PHY_State(

ViUInt32 cardnum,

ViUInt16 Ch,

PHY_STATUS *pStatusA,

PHY_STATUS *pStatusB);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

pStatusA

[out] NETA PHY接口状态。PHY_STATUS定义请参考附录1。

pStatusB

[out] NETB PHY接口状态。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 107: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 107 页 共 120 页

EphAfdx_Set_PHY_SpeedEphAfdx_Set_PHY_SpeedEphAfdx_Set_PHY_SpeedEphAfdx_Set_PHY_Speed

函数功能

设置指定通道的网络通讯速率。

函数原型

ViStatus _VI_FUNC EphAfdx_Set_PHY_Speed(

ViUInt32 cardnum,

ViUInt16 Ch,

ViUInt32 Speed);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

Ch

[in] 通道号,0~1。

Speed

[in] 网络通讯速率,可设置为:

0:网速自侦测。

1:固定100Mbps

2:固定10Mbps

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_INVALID_CH

API_FAILED

Page 108: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 108 页 共 120 页

EphAfdx_IRIG_ConfigEphAfdx_IRIG_ConfigEphAfdx_IRIG_ConfigEphAfdx_IRIG_Config

函数功能

此函数在支持外部IRIG输入的板卡中有效。

此函数用来设置API函数支持IRIG-B类型的函数(API中带有IRIG前缀的即

为IRIG类型函数),并设置是否允许外部IRIG-B信号输入。如果不允许外部IRIG-

B信号源输入,则板卡采用内部时钟源计时。

在配置为IRIG时间后,需要搜索IRIG参考电平。有两种方式:

1、硬件自动模式:由硬件自动查找IRIG的参考电平值;

2、软件模式:需要通过函数EphAfdx_IRIG_Calibration搜索电平值。

函数原型

ViStatus _VI_FUNC EphAfdx_IRIG_Config(

ViUInt32 cardnum,

ViUInt32 outFlag,

ViUInt32 AutoMode);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

outFlag

[in] 1:使用IRIG时间 0:使用内部时间。

AutoMode

[in] 1:硬件自动搜索IRIG参考电压:

0:软件搜索 IRIG参考电压,设置为该模式后,需要调用

EphAfdx_IRIG_Calibration函数查找参考电平。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_FAILED

Page 109: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 109 页 共 120 页

EphAfdx_IRIG_CalibrationEphAfdx_IRIG_CalibrationEphAfdx_IRIG_CalibrationEphAfdx_IRIG_Calibration

函数功能

此函数在支持外部IRIG输入的板卡中有效。

此函数用来进行IRIG DAC校准。在调用此函数之前必须调用

EphAfdx_IRIG_Config函数允许外部IRIG输入,并且设置为软件校准模式。

由于在使用EphAfdx_IRIG_Config函数时,已经设置了一个默认的DAC值 ,

所以此函数可以不调用,但是当板卡无法正确解析外部IRIG输入时,则必须使用

该函数进行DAC校准,校准时间最长为45s。

在调用此函数之前需要调用EphAfdx_IRIG_Config。

函数原型

ViStatus _VI_FUNC EphAfdx_IRIG_Calibration (

ViUInt32 cardnum,

ViUInt32 calFlag);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

outFlag

[in] 1:允许控制台打印正确校准后的DAC值, 0:禁止打印。

返回值

API_SUCCESS

API_INVALID_CARDNUM

API_FAILED

Page 110: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 110 页 共 120 页

EphAfdx_IRIG_ValidEphAfdx_IRIG_ValidEphAfdx_IRIG_ValidEphAfdx_IRIG_Valid

函数功能

此函数在支持外部IRIG输入的板卡中有效。

此函数用来判断板卡外部IRIG输入是否有效,时间信号源可以是外部IRIG

输入或者内部时钟源。函数返回值为0,表示外部IRIG输入有效。

函数原型

ViStatus _VI_FUNC EphAfdx_IRIG_Valid (ViUInt32 cardnum);

参数说明

cardnum

[in] 模块句柄,由连接函数获得。

返回值

API_SUCCESS (外部IRIG有效)

API_INVALID_CARDNUM

API_FAILED

Page 111: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 111 页 共 120 页

附录 1111 数据结构

EPAFDX_TIMEEPAFDX_TIMEEPAFDX_TIMEEPAFDX_TIME

typedef struct epafdx_time

{

ViUInt32 microseconds ; // microseconds since start of simulation

ViUInt16 topuseconds ; // Most significant part of microseconds

}

EPAFDX_TIME;

API_INT_FIFOAPI_INT_FIFOAPI_INT_FIFOAPI_INT_FIFO

typedef struct api_int_fifo

{

ViInt32 (_stdcall *function)(ViUInt32 cardnum,ViUInt16 chnum,

struct api_int_fifo *pFIFO);

int iPriority;

ViUInt32 FilterType;

ViUInt32 cardnum;

int nUser[8]; // Spare variables for use by the user.

void *pUser[8]; // Spare variables for use by the user.

ViInt32 head_index;

ViInt32 tail_index;

struct EP_FIFO // FIFO structure: events for user to process. $

{

ViInt32 event_type; // EVENT_ definitions below.

Page 112: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 112 页 共 120 页

ViInt32 reserved; // Reserved for API.

}

fifo[MAX_FIFO_LEN]; // FIFO has exactly 256 entries.}

API_INT_FIFO;

� Function:注册的中断回调函数

� iPriority:创建的线程优先级

� FilterType:中断事件设置,支持如下事件:

EVENT_MSG_CMPLT_RCV(一帧接收完成中断)

� cardnum:与该线程关联的板卡句柄

� nUser:Spare variables for use by the user.

THREAD_PRIORITY_ABOVE_NORMAL Indicates 1 point above normalpriority for the priority class.

THREAD_PRIORITY_BELOW_NORMAL Indicates 1 point below normalpriority for the priority class.

THREAD_PRIORITY_HIGHEST Indicates 2 points above normalpriority for the priority class.

THREAD_PRIORITY_IDLE Indicates a base priority level of 1for IDLE_PRIORITY_CLASS,NORMAL_PRIORITY_CLASS,or HIGH_PRIORITY_CLASSprocesses, and a base prioritylevel of 16 forREALTIME_PRIORITY_CLASS processes.

THREAD_PRIORITY_LOWEST Indicates 2 points below normalpriority for the priority class.

THREAD_PRIORITY_NORMAL Indicates normal priority for thepriority class.

THREAD_PRIORITY_TIME_CRITICAL Indicates a base priority level of15 for IDLE_PRIORITY_CLASS,NORMAL_PRIORITY_CLASS,or HIGH_PRIORITY_CLASSprocesses, and a base prioritylevel of 31 forREALTIME_PRIORITY_CLASS processes.

Page 113: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 113 页 共 120 页

� pUser:Spare variables for use by the user.

� head_index;:Index of element being added to queue (0->255)� tail_index: ndex of element to be removed from queue� fifo:中断 FIFO,最大存储 256个中断事件

� event_type:中断事件,EVENT_MSG_CMPLT_RCV(1帧接收完成)

� reserved: 保留参数

MACMACMACMACHeaderHeaderHeaderHeader StructureStructureStructureStructure

struct ETH_MACHDR {

ViUInt32 DstAddrHi; //Hi 32 bits of MAC destination address in low half

ViUInt16 DstAddrLo; //Lo 16 bits of MAC destination address

ViUInt32 SrcAddrHi; //Hi 32 bits of MAC source address

ViUInt16 SrcAddrLo; //Lo 16 bits of MAC source address

ViUInt16 type; //Fixed value 0x800

};

MACMACMACMAC DestinationDestinationDestinationDestination AddressAddressAddressAddress FormatFormatFormatFormat

MACMACMACMAC SourceSourceSourceSource AddressAddressAddressAddress FormatFormatFormatFormat

Bit 描述

16-47 Determined by system architect; same value for all ESs

00-15 Virtual Link Identifier (VLID)

Bit 描述

24-47 Fixed value: 20000 (H)

08-23 Determined by system architect; unique per ES

05-07 Set by module:

001 for network A

010 for network B

00-04 Fixed value: 0

Page 114: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 114 页 共 120 页

IPIPIPIP HeaderHeaderHeaderHeader StructureStructureStructureStructure

sstruct ETH_IPHDR {

ViUInt8 version_length; High 4 bits are version – a value of 4 indicates IP

version 4; next 4 bits are length, a value of 5 indicates

header is 5 32-bit words long.

ViUInt8 typeofService; 0x20 minimize delay

ViUInt16 IPpktLength; Length in bytes of the IP Header (20 bytes) plus the

data following the header; this data includes the UDP

header (if any) but does not include the sequence

number.

ViUInt16 Identification; A unique number for each message from a given ES;

fragments within a message are given the same

identification value.

ViUInt16 FragmentField; Bit 15 always 0 Bit 14 is the Do Not Fragment flag;

when set this flag indicates that the message cannot

be fragmented Bit 13 is the More Fragments flag;

indicates this is not the last fragment for this

message Bits 0 – 12 is the Fragment Offset field;

this is the byte offset within the original message

that this fragment came from, in units of 8 bytes.

ViUInt8 timetoLive; Indicates maximum number of switches the

message can go through before being dropped; in

AFDX it is typically set to 1 but not checked.

ViUInt8 protocol; 1 for ICMP

2 for IGMP

6 for TCP

17 for UDP – the most common for AFDX; the

drivers set this by default when creating a port;

ViUInt16 Checksum; Checksum of IP header

Page 115: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 115 页 共 120 页

ViUInt32 SrcAddr; See the description following the table

ViUInt32 DstAddr; See the description following the table

} ;

IPIPIPIP SourceSourceSourceSource AddressAddressAddressAddress FormatFormatFormatFormat

IPIPIPIP DestinationDestinationDestinationDestination FormatFormatFormatFormat

Bit 描述

31 1 indicates class A

24-30 0001010 indicates private IP address

08-23 Determined by system architect; unique per partition

00-07 Partition address

Bit 描述

16-31 E0E0 (H) Class D multicast address

00-15 Virtual Link Identifier (VLID)

Page 116: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 116 页 共 120 页

UDPUDPUDPUDP HeaderHeaderHeaderHeader StructureStructureStructureStructure

struct ETH_UDPHDR {

ViUInt16 UDPSrcPort; Usually a value above 0x8000

ViUInt16 UDPDstPort; Usually a value above 0x8000

ViUInt16 UDPLength; Length in bytes of the UDP Header (8 bytes) plus

the data following the header. This data does not

include the sequence number.

ViUInt16 UDPChecksum; Not used in AFDX

} ;

HeaderHeaderHeaderHeader StructureStructureStructureStructure

struct ETH_Headers {

struct ETH_MACHDR machdr; //MAC Header structure

struct ETH_IPHDR iphdr; //IP Header structure

struct ETH_UDPHDR udphdr; //UDP Header structure

} ;

RCV_VL_STRUCTRCV_VL_STRUCTRCV_VL_STRUCTRCV_VL_STRUCT

struct RCV_VL_STRUCT {

ViUInt16 length; From MAC header through Sequence number, inclusive

ViUInt16 errStatus; errors

ViUInt16 ttagHi; High order 16 bits of timetag

ViUInt32 ttagLo; Low order 32 bits of timetag

ViUInt16 status; bit15~bit14 保留 bit0: 0-Neta 1:Netb

struct ETH_MACHDR machdr; //MAC Header structure

struct ETH_IPHDR iphdr; //IP Header structure

Page 117: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 117 页 共 120 页

struct ETH_UDPHDR udphdr; //UDP Header structure

ViUInt8 *pData; //data until and including Sequence number

};

� Length:此长度表示一条消息长度(从MAC头到SN#)(在Queuing/SAP端口

读回的数据可以设置是否含SN#)。

� errStatus:消息错误状态,含以下状态。

ERR_TYPE_MAC_DES(0001H):MAC目标地址错误

ERR_TYPE_MAC_TYPE(0002H):MAC类型错误(不是IPV4的数据(0x0800)

的数据)

ERR_TYPE_NO_VLLIST(0004H):数据不在VL列表中错误

ERR_TYPE_IP_SRC(0008H): IP源地址错误;

ERR_TYPE_IPCKSUM(0010H):IPChecksum错误;

ERR_TYPE_UDP_SRC(0020H):UDP源地址错误

ERR_TYPE_UDP_DES(0040H):UDP目标地址错误

ERR_TYPE_SN(0080H):SN错误

ERR_TYPE_MACCORE(0100H):MAC核错误

� ttagHi:时标高16位

� ttagLo:时标低32位

� status:消息状态:

NETWORK_UNKNOW:未知状态

NETWORK_A:NETA传输;

NETWORK_B:NETB传输;

� pData:数据,Sampling端口读的数据含SN,Queuing/SAP端口读的数据由

Read_Queuing_Message / Read_SAP_Message 函数中的SN_Flag参数决定是

否包含SN。

PacketInfPacketInfPacketInfPacketInf

struct PacketInf

Page 118: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 118 页 共 120 页

{

ViUInt16 length; //from MAC header through Sequence number, inclusive

ViUInt16 errStatus; //errors

ViUInt16 ttagHi; //High order 16 bits of timetag

ViUInt32 ttagLo; //Low order 32 bits of timetag

ViUInt16 status; //bit15~bit14 保留 bit0: 0-Neta 1:Netb

ViUInt16 SN;

};

� Length:此长度表示一条帧长度(从MAC头到SN#)(在Queuing/SAP端口 读

回的数据可以设置是否含SN#)。

� errStatus:帧错误状态,含以下状态。

ERR_TYPE_MAC_DES(0001H):MAC目标地址错误

ERR_TYPE_MAC_TYPE(0002H):MAC类型错误(不是IPV4的数据(0x0800)

的数据)

ERR_TYPE_NO_VLLIST(0004H):数据不在VL列表中错误

ERR_TYPE_IP_SRC(0008H): IP源地址错误;

ERR_TYPE_IPCKSUM(0010H):IPChecksum错误;

ERR_TYPE_UDP_SRC(0020H):UDP源地址错误

ERR_TYPE_UDP_DES(0040H):UDP目标地址错误

ERR_TYPE_SN(0080H):SN错误

ERR_TYPE_MACCORE(0100H):MAC核错误

� ttagHi:时标高16位

� ttagLo:时标低32位

� status:消息状态:

NETWORK_UNKNOW:未知状态

NETWORK_A:NETA传输;

NETWORK_B:NETB传输;

� SN:SN值,0~255。

Page 119: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 119 页 共 120 页

PHY_STATUSPHY_STATUSPHY_STATUSPHY_STATUS

typedef struct phy_mdio_PHY_Status_struct

{

ViUInt32 LINK_STATUS :1;//连接状态,1表示有效的连接

ViUInt32 SPEED_STATUS :1;//连接速度状态,1=10Mbps,0=100Mbps

ViUInt32 DUPLEX_STATUS :1;//双工状态,1=全双工,0=半双工

ViUInt32 LOOPBACK_STATUS :1;//回环状态,1=回环状态,0=普通状态

ViUInt32 AUTO_NEG_COMPLETE :1;//自动适应完成,1=自适应完成,0=未

完成

ViUInt32 JABBER_DETECT :1;//1=超时检测

ViUInt32 REMOTE_FAULT :1;//Reserved

ViUInt32 MII_INTERRUPT :1;//1表示接收到1内部中断,0表示无中断,中断

状态由MISR寄存器获取

ViUInt32 PAGE_RECEIVED :1;// Reserved

ViUInt32 DESCRAMBLERLOCK :1; Reserved

ViUInt32 SIGNAL_DETECT :1;// Reserved

ViUInt32 FALSE_CARRIER_SENSE_LATCH :1; //Reserved

ViUInt32 POLARITY_STATUS :1;//极性检测,1表示极性错误,0表示极性正

ViUInt32 RECEIVE_ERROR_LATCH :1;//1=接收有错误

ViUInt32 MDIX_MODE :1;//1=MDI pairs swapped(接收对和发送对相反,接

收的数据在发送管脚上,发送的数据在接收管脚上)

ViUInt32 RESERVED :1;

ViUInt32 H_RESERVED :16;

}PHY_STATUS ;

Page 120: EPH-AFDX 软件参考手册 软件参考手册 ( ARINC664 AFDX 通讯模块 ) Tel : (86)-28-8514 8273 Fax : (86)-28-8514 8287 Http:// 成都恩菲特科技有限 ... EPH-AFDX

EPH-AFDX 软件参考手册

第 120 页 共 120 页

附录 2222 宏定义

// 函数返回值信息

#define API_SUCCESS 0 //函数返回成功

#define API_FAILED -1 //函数返回失败

#define API_INVALID_CARDNUM -2 //无效板卡句柄号

#define API_INVALID_CH -3 //无效通道号

#define API_INVALID_LEN -4 //无效长度值

#define API_PTR_ERR -5 //指针为空

#define API_NODEVICE -6 //没有找到板卡

#define API_INVALID_PARA -7 //无效参数

#define API_NOMATCHING -8 //不匹配错误

#define API_SEND_TIMEOUT -9 //发送超时

#define API_RECV_TIMEOUT -10 //接收超时

#define API_DEVICE_CLOSED -11 //设备已关闭

#define API_CHECK_FAILED -12 //校验失败

#define API_NOT_ENOUGH_SPACE -13 //存储空间不够

#define API_NO_NEW_DATA -14 //没有新的数据

#define API_XMTBUF_BUSY -15 //发送 buffer 忙

#define API_BADMODE -16 //错误模式设置

#define API_BAD_VLHANDEL -17 //无效 VL句柄

#define API_BAD_PORTHANDEL -18//无效端口句柄

#define API_NO_VL_ENTRY -19 //没有足够的空间创建 VL

#define API_NO_PORT_ENTRY -20 //已经创建了 4个端口