⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lvgvpglobal.h

📁 相机传输图像程序源代码 拜耳模式(RAW格式文件)与RGB图像数据互相转换函数库
💻 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 + -