ed095d76c82255f2a45fc28dc64bae8053326435vboxsync/* $Id$ */
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync/** @file
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * VirtualBox Driver interface to the virtual Usb Card Reader.
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync */
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync/*
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * Copyright (C) 2011-2012 Oracle Corporation
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync *
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * available from http://www.virtualbox.org. This file is free software;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * you can redistribute it and/or modify it under the terms of the GNU
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * General Public License (GPL) as published by the Free Software
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync */
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync#ifndef ____H_USBCARDREADER
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync#define ____H_USBCARDREADER
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync#include <VBox/vmm/pdmcardreaderinfs.h>
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync#include <VBox/vmm/pdmdrv.h>
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsyncclass Console;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsynctypedef struct USBCARDREADER USBCARDREADER;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsynctypedef struct UCRREMOTE UCRREMOTE;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsyncclass UsbCardReader
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync{
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync public:
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync UsbCardReader(Console *console);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync virtual ~UsbCardReader();
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync static const PDMDRVREG DrvReg;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync USBCARDREADER *mpDrv;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync Console *getParent(void) { return mParent; }
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int VRDENotify(uint32_t u32Id, void *pvData, uint32_t cbData);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Function, void *pvData, uint32_t cbData);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int EstablishContext(USBCARDREADER *pDrv);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int ReleaseContext(USBCARDREADER *pDrv);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int GetStatusChange(USBCARDREADER *pDrv, void *pvUser, uint32_t u32Timeout,
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync PDMICARDREADER_READERSTATE *paReaderStats, uint32_t cReaderStats);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int Connect(USBCARDREADER *pDrv, void *pvUser, const char *pszReaderName,
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync uint32_t u32ShareMode, uint32_t u32PreferredProtocols);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int Disconnect(USBCARDREADER *pDrv, void *pvUser, uint32_t u32Mode);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int Status(USBCARDREADER *pDrv, void *pvUser);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int Transmit(USBCARDREADER *pDrv, void *pvUser, PDMICARDREADER_IO_REQUEST *pioSendRequest,
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync uint8_t *pu8SendBuffer, uint32_t cbSendBuffer, uint32_t cbRecvBuffer);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int Control(USBCARDREADER *pDrv, void *pvUser, uint32_t u32ControlCode,
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync uint8_t *pu8InBuffer, uint32_t cbInBuffer, uint32_t cbOutBuffer);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int GetAttrib(USBCARDREADER *pDrv, void *pvUser, uint32_t u32AttrId, uint32_t cbAttrib);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int SetAttrib(USBCARDREADER *pDrv, void *pvUser, uint32_t u32AttrId,
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync uint8_t *pu8Attrib, uint32_t cbAttrib);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync private:
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync static DECLCALLBACK(void *) drvQueryInterface(PPDMIBASE pInterface, const char *pszIID);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync int vrdeSCardRequest(void *pvUser, uint32_t u32Function, const void *pvData, uint32_t cbData);
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync Console * const mParent;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync UCRREMOTE *m_pRemote;
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync};
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync#endif /* !____H_USBCARDREADER */
ed095d76c82255f2a45fc28dc64bae8053326435vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */