290 lines
14 KiB
C
290 lines
14 KiB
C
//
|
|
// Coreco API - Pixel Processor module functions.
|
|
//
|
|
|
|
#ifndef _CAPIPIXP_H_
|
|
#define _CAPIPIXP_H_
|
|
|
|
#include <capidef.h>
|
|
#include <capiacqd.h>
|
|
|
|
/****************************************************************************
|
|
* Pixel Processor Capabilities
|
|
****************************************************************************/
|
|
#define CORPIXPRO_CAP_FIRST 0
|
|
#define CORPIXPRO_CAP( n, size) ((((n) + CORPIXPRO_CAP_FIRST) << 16) | (size))
|
|
|
|
#define CORPIXPRO_CAP_FRAME_BUFFER_BASE_ADDRESS_BANK0 CORPIXPRO_CAP( 0, 4)
|
|
#define CORPIXPRO_CAP_FRAME_BUFFER_BASE_ADDRESS_BANK1 CORPIXPRO_CAP( 1, 4)
|
|
#define CORPIXPRO_CAP_LINE_BUFFER_BASE_ADDRESS_BANK0 CORPIXPRO_CAP( 2, 4)
|
|
#define CORPIXPRO_CAP_LINE_BUFFER_BASE_ADDRESS_BANK1 CORPIXPRO_CAP( 3, 4)
|
|
|
|
#define CORPIXPRO_CAP_FRAME_BUFFER_SIZE_BANK0 CORPIXPRO_CAP( 4, 4)
|
|
#define CORPIXPRO_CAP_FRAME_BUFFER_SIZE_BANK1 CORPIXPRO_CAP( 5, 4)
|
|
#define CORPIXPRO_CAP_LINE_BUFFER_SIZE_BANK0 CORPIXPRO_CAP( 6, 4)
|
|
#define CORPIXPRO_CAP_LINE_BUFFER_SIZE_BANK1 CORPIXPRO_CAP( 7, 4)
|
|
#define CORPIXPRO_CAP_EVENT_TYPE CORPIXPRO_CAP( 8, 4)
|
|
|
|
#define CORPIXPRO_CAP_FPGA_CORE_SPEED CORPIXPRO_CAP( 9, 4)
|
|
#define CORPIXPRO_CAP_FPGA_CTRL_SPEED CORPIXPRO_CAP(10, 4)
|
|
|
|
#define CORPIXPRO_CAP_FPGA_CORE_ID CORPIXPRO_CAP(11, 4)
|
|
#define CORPIXPRO_CAP_FPGA_CTRL_ID CORPIXPRO_CAP(12, 4)
|
|
#define CORPIXPRO_CAP_COMPONENTS_REVISION CORPIXPRO_CAP(13, 4)
|
|
|
|
#define CORPIXPRO_CAP_FRAME_BUFFER_SIZE_BANK2 CORPIXPRO_CAP(14, 4)
|
|
#define CORPIXPRO_CAP_FRAME_BUFFER_SIZE_BANK3 CORPIXPRO_CAP(15, 4)
|
|
#define CORPIXPRO_CAP_LINE_BUFFER_SIZE_BANK2 CORPIXPRO_CAP(16, 4)
|
|
#define CORPIXPRO_CAP_LINE_BUFFER_SIZE_BANK3 CORPIXPRO_CAP(17, 4)
|
|
#define CORPIXPRO_CAP_FPGA_CORE_DEVICE CORPIXPRO_CAP(18, 32)
|
|
#define CORPIXPRO_CAP_FPGA_CTRL_DEVICE CORPIXPRO_CAP(19, 32)
|
|
#define CORPIXPRO_CAP_FPGA_CORE_FAMILY CORPIXPRO_CAP(20, 4)
|
|
#define CORPIXPRO_CAP_FPGA_CTRL_FAMILY CORPIXPRO_CAP(21, 4)
|
|
|
|
#define CORPIXPRO_CAP_MESSAGE_PRIORITY CORPIXPRO_CAP(22, 4)
|
|
#define CORPIXPRO_CAP_MESSAGE_FLAG CORPIXPRO_CAP(23, 4)
|
|
|
|
|
|
/****************************************************************************
|
|
* Pixel Processor Parameters
|
|
****************************************************************************/
|
|
#define CORPIXPRO_PRM_FIRST 0
|
|
#define CORPIXPRO_PRM( n, size) ((((n) + CORPIXPRO_PRM_FIRST) << 16) | (size))
|
|
|
|
#define CORPIXPRO_PRM_DESIGN_NUMBER CORPIXPRO_PRM( 0x00000000, 4)
|
|
#define CORPIXPRO_PRM_DESIGN_NAME CORPIXPRO_PRM( 0x00000001, 128)
|
|
#define CORPIXPRO_PRM_LABEL CORPIXPRO_PRM( 0x00000002, 128)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK0_FORMAT CORPIXPRO_PRM( 0x00000003, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK0_WIDTH CORPIXPRO_PRM( 0x00000004, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK0_HEIGHT CORPIXPRO_PRM( 0x00000005, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK0_FRAME CORPIXPRO_PRM( 0x00000006, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK0_FIELD_ORDER CORPIXPRO_PRM( 0x00000007, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK1_FORMAT CORPIXPRO_PRM( 0x00000008, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK1_WIDTH CORPIXPRO_PRM( 0x00000009, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK1_HEIGHT CORPIXPRO_PRM( 0x0000000a, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK1_FRAME CORPIXPRO_PRM( 0x0000000b, 4)
|
|
#define CORPIXPRO_PRM_FRAME_BUFFER_BANK1_FIELD_ORDER CORPIXPRO_PRM( 0x0000000c, 4)
|
|
#define CORPIXPRO_PRM_INPUT_PORT0_SNAP_COUNT CORPIXPRO_PRM( 0x0000000d, 4)
|
|
#define CORPIXPRO_PRM_INPUT_PORT0_FORMAT CORPIXPRO_PRM( 0x0000000e, 4)
|
|
#define CORPIXPRO_PRM_INPUT_PORT0_WIDTH CORPIXPRO_PRM( 0x0000000f, 4)
|
|
#define CORPIXPRO_PRM_INPUT_PORT0_HEIGHT CORPIXPRO_PRM( 0x00000010, 4)
|
|
#define CORPIXPRO_PRM_INPUT_PORT0_FRAME CORPIXPRO_PRM( 0x00000011, 4)
|
|
#define CORPIXPRO_PRM_INPUT_PORT0_FIELD_ORDER CORPIXPRO_PRM( 0x00000012, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_FORMAT CORPIXPRO_PRM( 0x00000013, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_WIDTH CORPIXPRO_PRM( 0x00000014, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_HEIGHT CORPIXPRO_PRM( 0x00000015, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_FRAME CORPIXPRO_PRM( 0x00000016, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_FIELD_ORDER CORPIXPRO_PRM( 0x00000017, 4)
|
|
#define CORPIXPRO_PRM_INTERRUPT CORPIXPRO_PRM( 0x00000018, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_LABEL CORPIXPRO_PRM( 0x00000019, 16)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_LENGTH CORPIXPRO_PRM( 0x0000001a, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_BUFFER_COUNT CORPIXPRO_PRM( 0x0000001b, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_BUFFER_INDEX CORPIXPRO_PRM( 0x0000001c, 4)
|
|
#define CORPIXPRO_PRM_OUTPUT_PORT0_BUFFER_INFO CORPIXPRO_PRM( 0x0000001d, CORPIXPRO_VAL_MAX_OUTPUT_BUFFER_INFO*sizeof(CORPIXPRO_OUTPUT_BUFFER_INFO))
|
|
#define CORPIXPRO_PRM_EVENT_TYPE CORPIXPRO_PRM( 0x0000001e, 4)
|
|
#define CORPIXPRO_PRM_WAIT_STATE CORPIXPRO_PRM( 0x0000001f, 4)
|
|
#define CORPIXPRO_PRM_ACQ_CLOCK_MULTIPLY CORPIXPRO_PRM( 0x00000020, 4)
|
|
#define CORPIXPRO_PRM_DEMAND_MODE CORPIXPRO_PRM( 0x00000021, 4)
|
|
|
|
/***************************************************************************
|
|
* Pixel Processor Parameter Values
|
|
****************************************************************************/
|
|
#define CORPIXPRO_VAL_FRAME_INTERLACED CORACQ_VAL_FRAME_INTERLACED
|
|
#define CORPIXPRO_VAL_FRAME_NON_INTERLACED CORACQ_VAL_FRAME_NON_INTERLACED
|
|
#define CORPIXPRO_VAL_FRAME_PROGRESSIVE CORACQ_VAL_FRAME_PROGRESSIVE
|
|
|
|
#define CORPIXPRO_VAL_FIELD_ORDER_ODD_EVEN CORACQ_VAL_FIELD_ORDER_ODD_EVEN
|
|
#define CORPIXPRO_VAL_FIELD_ORDER_EVEN_ODD CORACQ_VAL_FIELD_ORDER_EVEN_ODD
|
|
#define CORPIXPRO_VAL_FIELD_ORDER_NEXT_FIELD CORACQ_VAL_FIELD_ORDER_NEXT_FIELD
|
|
|
|
#define CORPIXPRO_VAL_LENGTH_FIX 0x00000001
|
|
#define CORPIXPRO_VAL_LENGTH_VARIABLE 0x00000002
|
|
|
|
// Standard events
|
|
#define CORPIXPRO_VAL_EVENT_TYPE_START_OF_FRAME 0x00000001
|
|
#define CORPIXPRO_VAL_EVENT_START_OF_FRAME CORPIXPRO_VAL_EVENT_TYPE_START_OF_FRAME // For backward compatibility
|
|
#define CORPIXPRO_VAL_EVENT_TYPE_END_OF_FRAME 0x00000002
|
|
#define CORPIXPRO_VAL_EVENT_END_OF_FRAME CORPIXPRO_VAL_EVENT_TYPE_END_OF_FRAME // For backward compatibility
|
|
|
|
// Design specific events
|
|
#define CORPIXPRO_VAL_EVENT_TYPE_INTERRUPT0 0x00010000
|
|
#define CORPIXPRO_VAL_EVENT_INTERRUPT0 CORPIXPRO_VAL_EVENT_TYPE_INTERRUPT0 // For backward compatibility
|
|
#define CORPIXPRO_VAL_EVENT_TYPE_CTRL_INTERRUPT0 0x00010000
|
|
#define CORPIXPRO_VAL_EVENT_CTRL_INTERRUPT0 CORPIXPRO_VAL_EVENT_TYPE_CTRL_INTERRUPT0 // For backward compatibility
|
|
#define CORPIXPRO_VAL_EVENT_TYPE_CORE_INTERRUPT0 0x00020000
|
|
#define CORPIXPRO_VAL_EVENT_CORE_INTERRUPT0 CORPIXPRO_VAL_EVENT_TYPE_CORE_INTERRUPT0 // For backward compatibility
|
|
|
|
#define CORPIXPRO_VAL_EVENT_TYPE_MASK 0x00030003
|
|
|
|
#define CORPIXPRO_VAL_MAX_OUTPUT_BUFFER_INFO 32
|
|
|
|
/***************************************************************************
|
|
* FPGA ID definitions
|
|
****************************************************************************/
|
|
#define CORPIXPRO_FPGA_CTRL 0
|
|
#define CORPIXPRO_FPGA_CORE 1
|
|
|
|
/***************************************************************************
|
|
* DPT ID definitions
|
|
****************************************************************************/
|
|
#define CORPIXPRO_DPT_CONTINUOUS (-1L)
|
|
|
|
#define CORPIXPRO_DPT_0 0
|
|
#define CORPIXPRO_DPT_1 1
|
|
#define CORPIXPRO_DPT_2 2
|
|
#define CORPIXPRO_DPT_3 3
|
|
#define CORPIXPRO_DPT_4 4
|
|
#define CORPIXPRO_DPT_5 5
|
|
#define CORPIXPRO_DPT_6 6
|
|
|
|
/***************************************************************************
|
|
* Write Register Block Mode definitions
|
|
****************************************************************************/
|
|
#define CORPIXPRO_REGISTER_AUTO_INCREMENT 0x00000001
|
|
#define CORPIXPRO_REGISTER_NO_INCREMENT 0x00000002
|
|
|
|
/***************************************************************************
|
|
* Write Register Block accessType definitions
|
|
****************************************************************************/
|
|
#define CORPIXPRO_REGISTER_ACCESS_TYPE_UINT8 1
|
|
#define CORPIXPRO_REGISTER_ACCESS_TYPE_UINT16 2
|
|
#define CORPIXPRO_REGISTER_ACCESS_TYPE_UINT32 4
|
|
#define CORPIXPRO_REGISTER_ACCESS_TYPE_UINT32_UINT8 8 //access a 32 bits register as four 8 bits registers
|
|
|
|
/***************************************************************************
|
|
* Write Memory access types.
|
|
****************************************************************************/
|
|
#define CORPIXPRO_MEMACCESS_AUTO_ADDRESS_INCREMENT 1
|
|
#define CORPIXPRO_MEMACCESS_NO_ADDRESS_INCREMENT 2
|
|
|
|
/***************************************************************************
|
|
* FPGA type and speed
|
|
****************************************************************************/
|
|
#define CORPIXPRO_VAL_FPGA_ID_UNKNOWN 0x00000000
|
|
#define CORPIXPRO_VAL_FPGA_SPEED_UNKNOWN 0x00000000
|
|
/***************************************************************************
|
|
* Register Page Default Values
|
|
****************************************************************************/
|
|
#define CORPIXPRO_REGISTER_PAGE_DEFAULT 15
|
|
#define CORPIXPRO_REGISTER_PAGE_LUT 15
|
|
|
|
/***************************************************************************
|
|
* Components revison values
|
|
****************************************************************************/
|
|
#define CORPIXPRO_VAL_COMPONENTS_REVISION_DEFAULT 0
|
|
#define CORPIXPRO_VAL_COMPONENTS_REVISION_NO_CTRL 1
|
|
|
|
|
|
/***************************************************************************
|
|
* message priority values
|
|
****************************************************************************/
|
|
#define CORPIXPRO_VAL_MESSAGE_PRIORITY_LOW 0x0004
|
|
#define CORPIXPRO_VAL_MESSAGE_PRIORITY_NORMAL 0x0020
|
|
#define CORPIXPRO_VAL_MESSAGE_PRIORITY_HIGH 0x0100
|
|
|
|
/***************************************************************************
|
|
* message flag values
|
|
****************************************************************************/
|
|
#define CORPIXPRO_VAL_MESSAGE_FLAG_SYNCHRONOUS 0x0001
|
|
#define CORPIXPRO_VAL_MESSAGE_FLAG_ASYNCHRONOUS 0x0002
|
|
|
|
#include "cpackd.h"
|
|
|
|
typedef struct COR_PACK
|
|
{
|
|
UINT32 fpgaId;
|
|
UINT32 pageId;
|
|
UINT32 regId;
|
|
UINT32 accessType;
|
|
UINT32 value;
|
|
} CORPIXPRO_ON_DEMAND_COMMAND, *PCORPIXPRO_ON_DEMAND_COMMAND;
|
|
|
|
typedef struct COR_PACK
|
|
{
|
|
UINT32 regId;
|
|
UINT32 value;
|
|
} CORPIXPRO_REG_SET, *PCORPIXPRO_REG_SET;
|
|
|
|
typedef struct COR_PACK
|
|
{
|
|
UINT32 startAddress;
|
|
UINT32 countA;
|
|
UINT32 countB;
|
|
INT32 pitchB;
|
|
UINT32 countC;
|
|
INT32 pitchC;
|
|
UINT32 countD;
|
|
INT32 pitchD;
|
|
} CORPIXPRO_DPT, *PCORPIXPRO_DPT;
|
|
|
|
|
|
//
|
|
// WARNING: This structure cannot be modified as it will create an incompatibility
|
|
// with drivers compiled with a different size.
|
|
//
|
|
typedef struct COR_PACK
|
|
{
|
|
char label[16];
|
|
UINT32 width;
|
|
UINT32 height;
|
|
UINT32 format;
|
|
UINT32 frame;
|
|
UINT32 fieldOrder;
|
|
UINT32 length;
|
|
} CORPIXPRO_OUTPUT_BUFFER_INFO, *PCORPIXPRO_OUTPUT_BUFFER_INFO;
|
|
|
|
#include "cunpackd.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Application programming interface (standard)
|
|
CORSTATUS CORAPIFUNC CorPixProResetModule( CORSERVER hServer);
|
|
|
|
CORSTATUS CORAPIFUNC CorPixProGetHandle(CORSERVER hServer, UINT32 instance, CORPIXPRO *hPixPro);
|
|
CORSTATUS CORAPIFUNC CorPixProRelease(CORPIXPRO hPixPro);
|
|
CORSTATUS CORAPIFUNC CorPixProGetCount( CORSERVER hServer, PUINT32 count);
|
|
CORSTATUS CORAPIFUNC CorPixProReset(CORPIXPRO hPixPro);
|
|
|
|
CORSTATUS CORAPIFUNC CorPixProGetCap (CORPIXPRO hPixPro, UINT32 cap, void *value);
|
|
CORSTATUS CORAPIFUNC CorPixProGetPrm (CORPIXPRO hPixPro, UINT32 prm, void *value);
|
|
CORSTATUS CORAPIFUNC CorPixProSetPrm (CORPIXPRO hPixPro, UINT32 prm, UINT32 value);
|
|
CORSTATUS CORAPIFUNC CorPixProSetPrmEx(CORPIXPRO hPixPro, UINT32 prm, const void *value);
|
|
|
|
CORSTATUS CORAPIFUNC CorPixProRegisterCallback( CORPIXPRO hPixPro, UINT32 eventType, PCORCALLBACK callback, void *context);
|
|
CORSTATUS CORAPIFUNC CorPixProUnregisterCallback( CORPIXPRO hPixPro, PCORCALLBACK callback);
|
|
|
|
CORSTATUS CORAPIFUNC CorPixProRegisterCallbackEx( CORPIXPRO hPixPro, UINT32 eventType, PCOREVENTINFOCALLBACK callback, void *context);
|
|
CORSTATUS CORAPIFUNC CorPixProUnregisterCallbackEx( CORPIXPRO hPixPro, PCOREVENTINFOCALLBACK callback);
|
|
|
|
// Application programming interface (low level)
|
|
CORSTATUS CORAPIFUNC CorPixProMemoryAlloc(CORPIXPRO hPixPro, UINT32 bankId, UINT32 size, UINT32 *address);
|
|
CORSTATUS CORAPIFUNC CorPixProMemoryFree(CORPIXPRO hPixPro, UINT32 address);
|
|
CORSTATUS CORAPIFUNC CorPixProWriteDPT(CORPIXPRO hPixPro, UINT32 dptId, CORPIXPRO_DPT *dpt);
|
|
CORSTATUS CORAPIFUNC CorPixProWriteRegisters(CORPIXPRO hPixPro, UINT32 fpgaId, CORPIXPRO_REG_SET *set, UINT32 size);
|
|
CORSTATUS CORAPIFUNC CorPixProWriteRegisterBlock(CORPIXPRO hPixPro, UINT32 fpgaId, UINT32 pageId, UINT32 regId, UINT32 accessType, UINT8 *values, UINT32 size, UINT32 mode);
|
|
CORSTATUS CORAPIFUNC CorPixProReadRegisterBlock(CORPIXPRO hPixPro, UINT32 fpgaId, UINT32 pageId, UINT32 regId, UINT32 accessType, UINT8 *values, UINT32 size, UINT32 mode);
|
|
CORSTATUS CORAPIFUNC CorPixProReadRegisters(CORPIXPRO hPixPro, UINT32 fpgaId, CORPIXPRO_REG_SET *set, UINT32 size);
|
|
CORSTATUS CORAPIFUNC CorPixProLoadFpga(CORPIXPRO hPixPro, UINT32 fpgaId, PUINT8 bitStream, UINT32 size);
|
|
CORSTATUS CORAPIFUNC CorPixProLoadFpgaFromFile(CORPIXPRO hPixPro, UINT32 fpgaId, const char *filename);
|
|
CORSTATUS CORAPIFUNC CorPixProStartDPT(CORPIXPRO hPixPro, UINT32 dptId, UINT32 count);
|
|
CORSTATUS CORAPIFUNC CorPixProStopDPT(CORPIXPRO hPixPro, UINT32 dptId);
|
|
CORSTATUS CORAPIFUNC CorPixProExecuteCommand(CORPIXPRO hPixPro, CORPIXPRO_ON_DEMAND_COMMAND *cmdList ,UINT32 count);
|
|
CORSTATUS CORAPIFUNC CorPixProInternalCmd(CORPIXPRO hPixPro, UINT32 cmd, void *inData, UINT32 inDataSize, void *outData, UINT32 outDataSize);
|
|
CORSTATUS CORAPIFUNC CorPixProLoadFirmwareFromFile(CORPIXPRO hPixPro, UINT32 firmwareId, const char *filename);
|
|
|
|
CORSTATUS CORAPIFUNC CorPixProWriteMemory( CORPIXPRO hPixPro, UINT32 fpgaId, UINT32 address, void *pData, UINT32 dataSizeBytes, UINT32 flags);
|
|
CORSTATUS CORAPIFUNC CorPixProReadMemory( CORPIXPRO hPixPro, UINT32 fpgaId, UINT32 address, void *pData, UINT32 dataSizeBytes, UINT32 flags);
|
|
|
|
// pixpro communications.
|
|
CORSTATUS CORAPIFUNC CorPixProSendMessage( CORPIXPRO hPixPro, UINT32 cmd, UINT32 priority, UINT32 flag, UINT32 maxWaitTimeMs, void *inData, UINT32 inDataSize, void *outData, UINT32 outDataSize);
|
|
CORSTATUS CORAPIFUNC CorPixProRegisterMsgCallback( CORPIXPRO hPixPro, PCORMSGCALLBACK msgCallback, void* context);
|
|
CORSTATUS CORAPIFUNC CorPixProUnregisterMsgCallback( CORPIXPRO hPixPro);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _CAPIPIXP_H_
|