/*****************************************************************************\
 *
 *  Filename:           mediaplug.h
 *
 *  Description:        Media Plug Utility functions header file.
 *
 *
 *  Original author:    Arnaud Glatron - Ken Nicholson
 *
 *  Copyright (c) Winnov L.P., 1997
 *  All Rights Reserved.
 *
\*****************************************************************************/


#define LCMD_BIT_DOG 1
#define LCMD_BIT_POWER 2
#define LCMD_BIT_CABLE_CLOCK 4
#define LCMD_BIT_IC_CLOCK 8
#define LCMD_BIT_POW_NEED 32
#define LCMD_BIT_OBSOLETE 64
#define LCMD_BIT_CABLE_CONNECT 128
#define LCMD_BIT_TO_0 0x4000
#define LCMD_BIT_TO_1 0x8000

#define CMD_DIRTY_BIT 0x8000
#define CMD_WATCHDOG_BIT 0x4000

//MediaPlug commands...
#define MP_RST 0
#define MP_END_STREAM 1
#define MP_WRITE_REG 2
#define MP_READ_REG 3
#define MP_WRITE_STREAM 4
#define MP_NOP1 5
#define MP_NOP2 6
#define MP_READ_STREAM 7



//-----------------------------------------------------------------------------
// macros...
//-----------------------------------------------------------------------------

#define BUILDMPCMD(reg , cmd) (WORD)((reg<<3)|cmd)

//-----------------------------------------------------------------------------
// prototypes...
//-----------------------------------------------------------------------------

//low level...
WORD MPReadCMD(PCLIENT_CONTEXT pcc);
void MPWriteCMD(PCLIENT_CONTEXT pcc, WORD val);
WORD MPReadLCMD(PCLIENT_CONTEXT pcc);
void MPWriteLCMD(PCLIENT_CONTEXT pcc, WORD val);
WORD MPReadDATA(PCLIENT_CONTEXT pcc);
void MPWriteDATA(PCLIENT_CONTEXT pcc, WORD val);
void MPReaddwDATA(PCLIENT_CONTEXT pcc, PDWORD pdwValue);
void MPWritedwDATA(PCLIENT_CONTEXT pcc, DWORD dwval);

//high level...
BOOL MPGoHardware (PCLIENT_CONTEXT pcc);
#ifdef _DEBUG
	void MPBlinkLight(PCLIENT_CONTEXT pcc) ;
#endif
BOOL MPInitializeInterface(PCLIENT_CONTEXT pcc);
BOOL MPIsCameraConnected(PCLIENT_CONTEXT pcc);
void MPPowerOn(PCLIENT_CONTEXT pcc) ;
BOOL MPResetCamera(PCLIENT_CONTEXT pcc);
void MPPowerOff(PCLIENT_CONTEXT pcc) ;
BOOL MPReadStream(PCLIENT_CONTEXT pcc, WORD wRegister, PDWORD pBuffer, DWORD dwNumBytes);
BOOL MPWriteStream(PCLIENT_CONTEXT pcc, WORD wRegister, PDWORD pBuffer, DWORD dwNumBytes);
BOOL MPReadWordReg(PCLIENT_CONTEXT pcc, WORD wRegister, PWORD pwValue);
BOOL MPWriteWordReg(PCLIENT_CONTEXT pcc, WORD wRegister,WORD wValue);
BOOL MPReadStreamSlow(PCLIENT_CONTEXT pcc, WORD wRegister, PDWORD pBuffer, DWORD dwNumBytes);