260 lines
9.4 KiB
C
260 lines
9.4 KiB
C
/*
|
|
* API.h
|
|
*
|
|
* This module provides C callable APIs for each of the command supported by LightCrafter4500 platform and detailed in the programmer's guide.
|
|
*
|
|
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
|
|
* ALL RIGHTS RESERVED
|
|
*
|
|
*/
|
|
|
|
#ifndef API_H
|
|
#define API_H
|
|
|
|
/* Bit masks. */
|
|
#define BIT0 0x01
|
|
#define BIT1 0x02
|
|
#define BIT2 0x04
|
|
#define BIT3 0x08
|
|
#define BIT4 0x10
|
|
#define BIT5 0x20
|
|
#define BIT6 0x40
|
|
#define BIT7 0x80
|
|
#define BIT8 0x0100
|
|
#define BIT9 0x0200
|
|
#define BIT10 0x0400
|
|
#define BIT11 0x0800
|
|
#define BIT12 0x1000
|
|
#define BIT13 0x2000
|
|
#define BIT14 0x4000
|
|
#define BIT15 0x8000
|
|
#define BIT16 0x00010000
|
|
#define BIT17 0x00020000
|
|
#define BIT18 0x00040000
|
|
#define BIT19 0x00080000
|
|
#define BIT20 0x00100000
|
|
#define BIT21 0x00200000
|
|
#define BIT22 0x00400000
|
|
#define BIT23 0x00800000
|
|
#define BIT24 0x01000000
|
|
#define BIT25 0x02000000
|
|
#define BIT26 0x04000000
|
|
#define BIT27 0x08000000
|
|
#define BIT28 0x10000000
|
|
#define BIT29 0x20000000
|
|
#define BIT30 0x40000000
|
|
#define BIT31 0x80000000
|
|
|
|
#define STAT_BIT_FLASH_BUSY BIT3
|
|
#define HID_MESSAGE_MAX_SIZE 512
|
|
|
|
typedef struct _hidmessageStruct
|
|
{
|
|
struct _hidhead
|
|
{
|
|
struct _packetcontrolStruct
|
|
{
|
|
unsigned char dest :3; /* 0 - ProjCtrl; 1 - RFC; 7 - Debugmsg */
|
|
unsigned char reserved :2;
|
|
unsigned char nack :1; /* Command Handler Error */
|
|
unsigned char reply :1; /* Host wants a reply from device */
|
|
unsigned char rw :1; /* Write = 0; Read = 1 */
|
|
}flags;
|
|
unsigned char seq;
|
|
unsigned short length;
|
|
}head;
|
|
union
|
|
{
|
|
unsigned short cmd;
|
|
unsigned char data[HID_MESSAGE_MAX_SIZE];
|
|
}text;
|
|
}hidMessageStruct;
|
|
|
|
typedef struct _readCmdData
|
|
{
|
|
unsigned char CMD2;
|
|
unsigned char CMD3;
|
|
unsigned short len;
|
|
}CmdFormat;
|
|
|
|
typedef struct _rectangle
|
|
{
|
|
unsigned short firstPixel;
|
|
unsigned short firstLine;
|
|
unsigned short pixelsPerLine;
|
|
unsigned short linesPerFrame;
|
|
}rectangle;
|
|
|
|
typedef enum
|
|
{
|
|
SOURCE_SEL,
|
|
PIXEL_FORMAT,
|
|
CLK_SEL,
|
|
CHANNEL_SWAP,
|
|
FPD_MODE,
|
|
CURTAIN_COLOR,
|
|
POWER_CONTROL,
|
|
FLIP_LONG,
|
|
FLIP_SHORT,
|
|
TPG_SEL,
|
|
PWM_INVERT,
|
|
LED_ENABLE,
|
|
GET_VERSION,
|
|
SW_RESET,
|
|
DMD_PARK,
|
|
BUFFER_FREEZE,
|
|
STATUS_HW,
|
|
STATUS_SYS,
|
|
STATUS_MAIN,
|
|
CSC_DATA,
|
|
GAMMA_CTL,
|
|
BC_CTL,
|
|
PWM_ENABLE,
|
|
PWM_SETUP,
|
|
PWM_CAPTURE_CONFIG,
|
|
GPIO_CONFIG,
|
|
LED_CURRENT,
|
|
DISP_CONFIG,
|
|
TEMP_CONFIG,
|
|
TEMP_READ,
|
|
MEM_CONTROL,
|
|
I2C_CONTROL,
|
|
LUT_VALID,
|
|
DISP_MODE,
|
|
TRIG_OUT1_CTL,
|
|
TRIG_OUT2_CTL,
|
|
RED_STROBE_DLY,
|
|
GRN_STROBE_DLY,
|
|
BLU_STROBE_DLY,
|
|
PAT_DISP_MODE,
|
|
PAT_TRIG_MODE,
|
|
PAT_START_STOP,
|
|
BUFFER_SWAP,
|
|
BUFFER_WR_DISABLE,
|
|
CURRENT_RD_BUFFER,
|
|
PAT_EXPO_PRD,
|
|
INVERT_DATA,
|
|
PAT_CONFIG,
|
|
MBOX_ADDRESS,
|
|
MBOX_CONTROL,
|
|
MBOX_DATA,
|
|
TRIG_IN1_DELAY,
|
|
TRIG_IN2_CONTROL,
|
|
SPLASH_LOAD,
|
|
SPLASH_LOAD_TIMING,
|
|
GPCLK_CONFIG,
|
|
PULSE_GPIO_23,
|
|
ENABLE_LCR_DEBUG,
|
|
TPG_COLOR,
|
|
PWM_CAPTURE_READ,
|
|
PROG_MODE,
|
|
BL_STATUS,
|
|
BL_SPL_MODE,
|
|
BL_GET_MANID,
|
|
BL_GET_DEVID,
|
|
BL_GET_CHKSUM,
|
|
BL_SET_SECTADDR,
|
|
BL_SECT_ERASE,
|
|
BL_SET_DNLDSIZE,
|
|
BL_DNLD_DATA,
|
|
BL_FLASH_TYPE,
|
|
BL_CALC_CHKSUM,
|
|
BL_PROG_MODE,
|
|
}LCR_CMD;
|
|
|
|
int LCR_SetInputSource(unsigned int source, unsigned int portWidth);
|
|
int LCR_GetInputSource(unsigned int *pSource, unsigned int *portWidth);
|
|
int LCR_SetPixelFormat(unsigned int format);
|
|
int LCR_GetPixelFormat(unsigned int *pFormat);
|
|
int LCR_SetPortClock(unsigned int clock);
|
|
int LCR_GetPortClock(unsigned int *pClock);
|
|
int LCR_SetDataChannelSwap(unsigned int port, unsigned int swap);
|
|
int LCR_GetDataChannelSwap(unsigned int *pPort, unsigned int *pSwap);
|
|
int LCR_SetFPD_Mode_Field(unsigned int PixelMappingMode, bool SwapPolarity, unsigned int FieldSignalSelect);
|
|
int LCR_GetFPD_Mode_Field(unsigned int *pPixelMappingMode, bool *pSwapPolarity, unsigned int *pFieldSignalSelect);
|
|
int LCR_SetPowerMode(bool);
|
|
int LCR_SetLongAxisImageFlip(bool);
|
|
bool LCR_GetLongAxisImageFlip();
|
|
int LCR_SetShortAxisImageFlip(bool);
|
|
bool LCR_GetShortAxisImageFlip();
|
|
int LCR_SetTPGSelect(unsigned int pattern);
|
|
int LCR_GetTPGSelect(unsigned int *pPattern);
|
|
int LCR_SetPWMInvert(bool invert);
|
|
int LCR_GetPWMInvert(bool *inverted);
|
|
int LCR_SetLedEnables(bool SeqCtrl, bool Red, bool Green, bool Blue);
|
|
int LCR_GetLedEnables(bool *pSeqCtrl, bool *pRed, bool *pGreen, bool *pBlue);
|
|
int LCR_GetVersion(unsigned int *pApp_ver, unsigned int *pAPI_ver, unsigned int *pSWConfig_ver, unsigned int *pSeqConfig_ver);
|
|
int LCR_SoftwareReset(void);
|
|
int LCR_GetStatus(unsigned char *pHWStatus, unsigned char *pSysStatus, unsigned char *pMainStatus);
|
|
int LCR_SetPWMEnable(unsigned int channel, bool Enable);
|
|
int LCR_GetPWMEnable(unsigned int channel, bool *pEnable);
|
|
int LCR_SetPWMConfig(unsigned int channel, unsigned int pulsePeriod, unsigned int dutyCycle);
|
|
int LCR_GetPWMConfig(unsigned int channel, unsigned int *pPulsePeriod, unsigned int *pDutyCycle);
|
|
int LCR_SetPWMCaptureConfig(unsigned int channel, bool enable, unsigned int sampleRate);
|
|
int LCR_GetPWMCaptureConfig(unsigned int channel, bool *pEnabled, unsigned int *pSampleRate);
|
|
int LCR_SetGPIOConfig(unsigned int pinNum, bool enAltFunc, bool altFunc1, bool dirOutput, bool outTypeOpenDrain, bool pinState);
|
|
int LCR_GetGPIOConfig(unsigned int pinNum, bool *pEnAltFunc, bool *pAltFunc1, bool *pDirOutput, bool *pOutTypeOpenDrain, bool *pState);
|
|
int LCR_GetLedCurrents(unsigned char *pRed, unsigned char *pGreen, unsigned char *pBlue);
|
|
int LCR_SetLedCurrents(unsigned char RedCurrent, unsigned char GreenCurrent, unsigned char BlueCurrent);
|
|
int LCR_SetDisplay(rectangle croppedArea, rectangle displayArea);
|
|
int LCR_GetDisplay(rectangle *pCroppedArea, rectangle *pDisplayArea);
|
|
int LCR_MemRead(unsigned int addr, unsigned int *readWord);
|
|
int LCR_MemWrite(unsigned int addr, unsigned int data);
|
|
int LCR_ValidatePatLutData(unsigned int *pStatus);
|
|
int LCR_SetPatternDisplayMode(bool external);
|
|
int LCR_GetPatternDisplayMode(bool *external);
|
|
int LCR_SetTrigOutConfig(unsigned int trigOutNum, bool invert, unsigned int rising, unsigned int falling);
|
|
int LCR_GetTrigOutConfig(unsigned int trigOutNum, bool *pInvert,unsigned int *pRising, unsigned int *pFalling);
|
|
int LCR_SetRedLEDStrobeDelay(unsigned char rising, unsigned char falling);
|
|
int LCR_SetGreenLEDStrobeDelay(unsigned char rising, unsigned char falling);
|
|
int LCR_SetBlueLEDStrobeDelay(unsigned char rising, unsigned char falling);
|
|
int LCR_GetRedLEDStrobeDelay(unsigned char *, unsigned char *);
|
|
int LCR_GetGreenLEDStrobeDelay(unsigned char *, unsigned char *);
|
|
int LCR_GetBlueLEDStrobeDelay(unsigned char *, unsigned char *);
|
|
int LCR_SetProgrammingMode(bool EnterProgMode);
|
|
int LCR_ExitProgrammingMode(void);
|
|
int LCR_GetProgrammingMode(bool *ProgMode);
|
|
int LCR_GetFlashManID(unsigned short *manID);
|
|
int LCR_GetFlashDevID(unsigned long long *devID);
|
|
int LCR_GetBLStatus(unsigned char *BL_Status);
|
|
int LCR_BLSpecialMode(unsigned int Mode);
|
|
int LCR_SetFlashAddr(unsigned int Addr);
|
|
int LCR_FlashSectorErase(void);
|
|
int LCR_SetDownloadSize(unsigned int dataLen);
|
|
int LCR_DownloadData(unsigned char *pByteArray, unsigned int dataLen);
|
|
void LCR_WaitForFlashReady(void);
|
|
int LCR_SetFlashType(unsigned char Type);
|
|
int LCR_CalculateFlashChecksum(void);
|
|
int LCR_GetFlashChecksum(unsigned int*checksum);
|
|
int LCR_SetMode(bool SLmode);
|
|
int LCR_GetMode(bool *pMode);
|
|
int LCR_LoadSplash(unsigned int index);
|
|
int LCR_GetSplashIndex(unsigned int *pIndex);
|
|
int LCR_SetTPGColor(unsigned short redFG, unsigned short greenFG, unsigned short blueFG, unsigned short redBG, unsigned short greenBG, unsigned short blueBG);
|
|
int LCR_GetTPGColor(unsigned short *pRedFG, unsigned short *pGreenFG, unsigned short *pBlueFG, unsigned short *pRedBG, unsigned short *pGreenBG, unsigned short *pBlueBG);
|
|
int LCR_ClearPatLut(void);
|
|
int LCR_AddToPatLut(int TrigType, int PatNum,int BitDepth,int LEDSelect,bool InvertPat, bool InsertBlack,bool BufSwap, bool trigOutPrev);
|
|
int LCR_GetPatLutItem(int index, int *pTrigType, int *pPatNum,int *pBitDepth,int *pLEDSelect,bool *pInvertPat, bool *pInsertBlack,bool *pBufSwap, bool *pTrigOutPrev);
|
|
int LCR_SendPatLut(void);
|
|
int LCR_SendSplashLut(unsigned char *lutEntries, unsigned int numEntries);
|
|
int LCR_GetPatLut(int numEntries);
|
|
int LCR_GetSplashLut(unsigned char *pLut, int numEntries);
|
|
int LCR_SetPatternTriggerMode(bool);
|
|
int LCR_GetPatternTriggerMode(bool *);
|
|
int LCR_PatternDisplay(int Action);
|
|
int LCR_SetPatternConfig(unsigned int numLutEntries, bool repeat, unsigned int numPatsForTrigOut2, unsigned int numSplash);
|
|
int LCR_GetPatternConfig(unsigned int *pNumLutEntries, bool *pRepeat, unsigned int *pNumPatsForTrigOut2, unsigned int *pNumSplash);
|
|
int LCR_SetExpsosure_FramePeriod(unsigned int exposurePeriod, unsigned int framePeriod);
|
|
int LCR_GetExposure_FramePeriod(unsigned int *pExposure, unsigned int *pFramePeriod);
|
|
int LCR_SetTrigIn1Delay(unsigned int Delay);
|
|
int LCR_GetTrigIn1Delay(unsigned int *pDelay);
|
|
int LCR_SetInvertData(bool invert);
|
|
int LCR_PWMCaptureRead(unsigned int channel, unsigned int *pLowPeriod, unsigned int *pHighPeriod);
|
|
int LCR_SetGeneralPurposeClockOutFreq(unsigned int clkId, bool enable, unsigned int clkDivider);
|
|
int LCR_GetGeneralPurposeClockOutFreq(unsigned int clkId, bool *pEnabled, unsigned int *pClkDivider);
|
|
int LCR_MeasureSplashLoadTiming(unsigned int startIndex, unsigned int numSplash);
|
|
int LCR_ReadSplashLoadTiming(unsigned int *pTimingData);
|
|
|
|
|
|
#endif // API_H
|