/*****************************************************************************\
 *
 *  Filename:           miniHAL.c
 *
 *  Description:        Hardware Interface Abstraction header file.
 *
 *
 *  Original author:    Arnaud Glatron - Barbara Trzebowski
 *
 *  Copyright (c) Winnov L.P., 1998
 *  All Rights Reserved.
 *
\*****************************************************************************/


#include <windows.h>
#include <cardserv.h>
#include "private.h"
#include "mediaplug.h"
#include "miniHAL.h"
#include "caviario.h"

    
BOOL GoHardware (PCLIENT_CONTEXT pcc)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		return MPGoHardware(pcc);
		break;
	default: 
		return FALSE;
		break;
	}		
}

#ifdef _DEBUG
void BlinkLight(PCLIENT_CONTEXT pcc) 
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		MPBlinkLight(pcc);
		break;	
	default:
		break;
	}
}
#endif

BOOL InitializeInterface(PCLIENT_CONTEXT pcc)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		return MPInitializeInterface(pcc);
		break;
	default: 
		return FALSE;
		break;
	}
}


BOOL IsCameraConnected(PCLIENT_CONTEXT pcc)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		return MPIsCameraConnected(pcc);
		break;
	default: 
		return FALSE;
		break;
	}
}


void PowerOn(PCLIENT_CONTEXT pcc) 
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		MPPowerOn(pcc);
		break;
	default: 
		break;
	}
}


BOOL ResetCamera(PCLIENT_CONTEXT pcc)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		return MPResetCamera(pcc);
		break;		
	default: 
		return FALSE;
		break;
	}
}


void PowerOff(PCLIENT_CONTEXT pcc) 
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		MPPowerOff(pcc);
		break;		
	default:
		break;
	}
}


BOOL ReadStream(PCLIENT_CONTEXT pcc, WORD wRegister, PDWORD pBuffer, DWORD dwNumBytes)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:	
		return MPReadStream(pcc, wRegister, pBuffer, dwNumBytes);
		break;
	case INTERFACE_EPSON_MEDIAPLUG:	
		return MPReadStreamSlow(pcc, wRegister, pBuffer, dwNumBytes);
		break;
	default: 
		return FALSE;
		break;
	}
}


BOOL WriteStream(PCLIENT_CONTEXT pcc, WORD wRegister, PDWORD pBuffer, DWORD dwNumBytes)
{
	switch (pcc->IntType)
	{
	case INTERFACE_EPSON_MEDIAPLUG:
	case INTERFACE_MEDIAPLUG_PCMCIA:	
		return MPWriteStream(pcc, wRegister, pBuffer, dwNumBytes);
		break;
	default: 
		return FALSE;
		break;
	}
}


BOOL ReadWordReg(PCLIENT_CONTEXT pcc, WORD wRegister, PWORD pwValue)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		return MPReadWordReg(pcc, wRegister, pwValue);
		break;		
	default: 
		return FALSE;
		break;
	}
}


BOOL WriteWordReg(PCLIENT_CONTEXT pcc, WORD wRegister,WORD wValue)
{
	switch (pcc->IntType)
	{
	case INTERFACE_MEDIAPLUG_PCMCIA:
	case INTERFACE_EPSON_MEDIAPLUG:
		return MPWriteWordReg(pcc, wRegister, wValue);
		break;		
	default: 
		return FALSE;
		break;
	}
}



