📄 lvgvpglobal.h
字号:
#ifndef _LV_GVP_GLOBAL_H_
#define _LV_GVP_GLOBAL_H_
/****************************************************************************
* GVP Definitions *
****************************************************************************/
// ------------------------------------------------------------
// Status / Error Feedback
typedef U32BIT LVGVPSTATUS;
#define LVGVP_STATUS_INFO(a) (a & ~(1<<15))
#define LVGVP_STATUS_ERROR(a) (a | (1<<15))
#define LVGVP_STATUS_STD(a) (a & ~(1<<14))
#define LVGVP_STATUS_VEND(a) (a | (1<<15))
#define LVGVP_STATUS_IS_INFO(a) (a && (a & 0x8000)==0)
#define LVGVP_STATUS_IS_ERROR(a) (a & 0x8000)
typedef enum _tagLvGvpStatusField {
/*
Bit 15 --> Info=0, Error=1
Bit 14 --> Standard-GVP=0, Device-Specific=1
Bit 13-12 --> Reserved
Bit 11-00 --> Error Code
Therefore:
Standard GVP Info --> 0x0...
Standard GVP Error --> 0x8...
LV GVP Info --> 0x4...
LV GVP Error --> 0xC...
Following codes includes bit 14/15
*/
StdGvp_STATUS_SUCCESS = 0x0000,
StdGvp_STATUS_NOT_IMPLEMENTED = 0x8001,
StdGvp_STATUS_INVALID_PARAMETER = 0x8002,
StdGvp_STATUS_INVALID_ADDRESS = 0x8003,
StdGvp_STATUS_WRITE_PROTECT = 0x8004,
StdGvp_STATUS_BAD_ALIGNMENT = 0x8005,
StdGvp_STATUS_ACCESS_DENIED = 0x8006,
StdGvp_STATUS_BUSY = 0x8007,
StdGvp_STATUS_LOCAL_PROBLEM = 0x8008,
StdGvp_STATUS_MSG_MISSMATCH = 0x8009,
StdGvp_STATUS_INVALID_PROTOCOL = 0x800A,
StdGvp_STATUS_NO_MSG = 0x800B,
StdGvp_STATUS_PACKET_UNAVAILABLE= 0x800C,
StdGvp_STATUS_DATA_OVERRUN = 0x800D,
StdGvp_STATUS_INVALID_HEADER = 0x800E,
StdGvp_STATUS_ERROR = 0x8FFF,
LvGvp_Info_TrgDelayed = 0x4001,
LvGvp_Info2 = 0x4002,
LvGvp_Err_NotInitialized = 0xC001,
LvGvp_Err_HostNotFound = 0xC002,
LvGvp_Err_Socket = 0xC003,
LvGvp_Err_NullPointer = 0xC004,
LvGvp_Err_InvalideHandle = 0xC005,
LvGvp_Err_Alloc = 0xC006,
LvGvp_Err_SizeMissmatch = 0xC007,
LvGvp_Err_Dependency = 0xC008,
LvGvp_Err_DrvDeviceIO = 0xC009,
LvGvp_Err_TrgOverrun = 0xC00A,
LvGvp_Err_AcqDataOverrun = 0xC00B,
} LvGvpStatusField;
// ------------------------------------------------------------
// streaming
typedef enum _tagLvGvspFormatField {
LvGvsp_DATA_LEADER = 0x0,
LvGvsp_DATA_TRAILER = 0x1,
LvGvsp_DATA_PAYLOAD = 0x2,
} LvGvspFormatField;
typedef struct _tagLvGvpTimeStamp {
U32BIT High;
U32BIT Low;
} LvGvpTimeStamp;
typedef struct _tagLvGvpImageInfo {
U32BIT Status;
U32BIT PixelType;
U32BIT SizeX;
U32BIT SizeY;
U32BIT OffsetX;
U32BIT OffsetY;
U32BIT SeqStatus;
LvGvpTimeStamp TimeStamp;
U32BIT FrameNumber;
} LvGvpImageInfo;
/****************************************************************************
* Ethernet Packet Definitions *
****************************************************************************/
/*
* NOTE: Ethernet packets are defined by offsets into the packet instead of
* as a data structure to reduce alignment problems.
*/
#define ETHER_ADDR_LENGTH 6
#define ETHER_TYPE_LENGTH 2
#define MAX_802_3_LENGTH 1500 // Maximum Value For 802.3 Length Field
#define MAX_ETHER_SIZE 1514 // Maximum Ethernet Packet Length
#define MIN_ETHER_SIZE 60 // Minimum Ethernet Packet Length
//
// Ethernet With IEEE 802.1Q VLAN Tag Header
// -----------------------------------------
// Possibility of IEEE 802.1Q extends the possible Ethernet frame size
// from 1514 to 1518. Since VLAN is becoming more proific the new larger
// frame size should be used as the default frame size in some cases.
//
#define VLAN_TAG_HEADER_SIZE 4 // IEEE 802.1Q VLAN Tag Header Size
#define MAX_ETHER_SIZE_WITH_TAG (MAX_ETHER_SIZE + VLAN_TAG_HEADER_SIZE)
/* Offsets Into Ethernet 802.3 Medium Access Control (MAC) Packet Header
------------------------------------------------------------------------ */
#define MDstAddr 0 // Offset To Destination Address
#define MSrcAddr ETHER_ADDR_LENGTH // Offset To Source Address
#define MLength (MSrcAddr + ETHER_ADDR_LENGTH) // Of Bytes Following MAC Header
#define MEtherType MLength // Ether Type
#define MHdrSize (MLength + ETHER_TYPE_LENGTH ) // MAC 802.3 Header Size
//
// Offsets Related To IEEE 803.1Q VLAN Header
//
#define MVlanTPID MLength // VLAN TPID
#define MVlanTCI (MVlanTPID + 2) // VLAN TCI
/* Offsets Into Ethernet 802.2 LLC (Type 1) Packet Header (From MAC Data)
------------------------------------------------------------------------- */
#define LDSAP 0 // Destination Service Access Point
#define LSSAP (LDSAP + 1) // Source Service Access Point
#define LCntrl (LSSAP + 1) // LLC Control Field
#define LHdrSize (LCntrl + 1) // LLC Header Size
/* Offsets Into Sub-Network Access Protocol (SNAP) Header (From MAC Data)
------------------------------------------------------------------------- */
#define SType LHdrSize // SNAP Type
#define SHdrSize (SType + 5) // SNAP Type Size
/****************************************************************************
* TokenRing Packet Definitions *
****************************************************************************/
/*
* NOTE: TokenRing packets are defined by offsets into the packet instead of
* as a data structure to reduce alignment problems.
*/
#define TR_FUNCTIONAL_LENGTH 4
#define TR_ADDR_LENGTH 6
#define MAX_TOKENRING_4MBPS_SIZE 4550 // Maximum 4MBPS TokenRing Packet Length
#define MAX_TOKENRING_16MBPS_SIZE 18200 // Maximum 16MBPS TokenRing Packet Length
#endif // _LV_GVP_GLOBAL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -