summaryrefslogtreecommitdiff
path: root/src/VBox/Frontends/VBoxBFE/USBProxyService.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Frontends/VBoxBFE/USBProxyService.h')
-rw-r--r--src/VBox/Frontends/VBoxBFE/USBProxyService.h240
1 files changed, 0 insertions, 240 deletions
diff --git a/src/VBox/Frontends/VBoxBFE/USBProxyService.h b/src/VBox/Frontends/VBoxBFE/USBProxyService.h
deleted file mode 100644
index 2e4188027..000000000
--- a/src/VBox/Frontends/VBoxBFE/USBProxyService.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/** @file
- *
- * VBox frontends: Basic Frontend (BFE):
- * Declaration of USBProxyService and USBProxyServiceLinux classes
- */
-
-/*
- * Copyright (C) 2006-2007 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef ____H_USBPROXYSERVICE
-#define ____H_USBPROXYSERVICE
-
-#ifndef VBOXBFE_WITH_USB
-# error "misconfiguration VBOXBFE_WITH_USB isn't defined and USBProxyService.h was included."
-#endif
-
-#include "HostUSBImpl.h"
-#include "HostUSBDeviceImpl.h"
-
-/**
- * Base class for the USB Proxy service.
- */
-class USBProxyService
-{
-public:
- USBProxyService (HostUSB *aHost);
- virtual ~USBProxyService();
-
- /**
- * A VM is trying to capture a device, do necessary preparations.
- *
- * @returns VBox status code.
- * @param pDevice The device in question.
- */
- virtual int captureDevice (HostUSBDevice *pDevice);
-
- /**
- * The device is to be held so that the host OS will not start using it.
- *
- * @returns VBox status code.
- * @param pDevice The device in question.
- */
- virtual int holdDevice (HostUSBDevice *pDevice);
-
- /**
- * A VM is releasing a device back to the host.
- *
- * @returns VBox status code.
- * @param pDevice The device in question.
- */
- virtual int releaseDevice (HostUSBDevice *pDevice);
-
- /**
- * A VM is releasing a device back to be held or assigned to another VM.
- * A port reset should be performed.
- *
- * @returns VBox status code.
- * @param pDevice The device in question.
- */
- virtual int resetDevice (HostUSBDevice *pDevice);
-
- /**
- * Query if the service is active and working.
- *
- * @returns true if the service is up running.
- * @returns false if the service isn't running.
- */
- bool isActive (void);
-
- /**
- * Get last error.
- * Can be used to check why the proxy !isActive() upon construction.
- *
- * @returns VBox status code.
- */
- int getLastError (void);
-
- /**
- * Calculate the hash of the serial string.
- *
- * 64bit FNV1a, chosen because it is designed to hash in to a power of two
- * space, and is much quicker and simpler than, say, a half MD4.
- *
- * @returns the hash.
- * @param aSerial The serial string.
- */
- static uint64_t calcSerialHash (const char *aSerial);
-
-protected:
-
- /**
- * Starts the service.
- *
- * @returns VBox status.
- */
- int start (void);
-
- /**
- * Stops the service.
- *
- * @returns VBox status.
- */
- int stop (void);
-
- /**
- * Wait for a change in the USB devices attached to the host.
- *
- * @returns VBox status (ignored).
- * @param aMillies Number of milliseconds to wait.
- */
- virtual int wait (unsigned aMillies);
-
- /**
- * Interrupt any wait() call in progress.
- *
- * @returns VBox status.
- */
- virtual int interruptWait (void);
-
- /**
- * Get a list of USB device currently attached to the host.
- *
- * @returns Pointer to a list of USB devices.
- * The list nodes are freed individually by calling freeDevice().
- */
- virtual PUSBDEVICE getDevices (void);
-
-public:
- /**
- * Free one USB device returned by getDevice().
- *
- * @param pDevice Pointer to the device.
- */
- static void freeDevice (PUSBDEVICE pDevice);
-
-private:
- /**
- * Process any relevant changes in the attached USB devices.
- */
- void processChanges (void);
-
- /**
- * The service thread created by start().
- *
- * @param Thread The thread handle.
- * @param pvUser Pointer to the USBProxyService instance.
- */
- static DECLCALLBACK (int) serviceThread (RTTHREAD Thread, void *pvUser);
-
-protected:
- /** Pointer to the HostUSB object. */
- HostUSB *mHost;
- /** Thread handle of the service thread. */
- RTTHREAD mThread;
- /** Flag which stop() sets to cause serviceThread to return. */
- bool volatile mTerminate;
- /** List of smart HostUSBDevice pointers. */
- typedef std::list <HostUSBDevice *> HostUSBDeviceList;
- /** List of the known USB devices. */
- HostUSBDeviceList mDevices;
- /** VBox status code of the last failure.
- * (Only used by start(), stop() and the child constructors.) */
- int mLastError;
-};
-
-
-#if defined(RT_OS_LINUX) || defined(RT_OS_L4)
-#include <stdio.h>
-
-/**
- * The Linux hosted USB Proxy Service.
- */
-class USBProxyServiceLinux : public USBProxyService
-{
-public:
- USBProxyServiceLinux (HostUSB *aHost, const char *aUsbfsRoot = "/proc/bus/usb");
- ~USBProxyServiceLinux();
-
- virtual int captureDevice (HostUSBDevice *aDevice);
- virtual int holdDevice (HostUSBDevice *aDevice);
- virtual int releaseDevice (HostUSBDevice *aDevice);
- virtual int resetDevice (HostUSBDevice *aDevice);
-
-protected:
- virtual int wait (unsigned aMillies);
- virtual int interruptWait (void);
- virtual PUSBDEVICE getDevices (void);
-
-private:
- /** File handle to the '/proc/bus/usb/devices' file. */
- RTFILE mFile;
- /** Stream for mFile. */
- FILE *mStream;
- /** Pipe used to interrupt wait(), the read end. */
- RTFILE mWakeupPipeR;
- /** Pipe used to interrupt wait(), the write end. */
- RTFILE mWakeupPipeW;
- /** The root of usbfs. */
- std::string mUsbfsRoot;
-};
-#endif /* RT_OS_LINUX */
-
-
-#ifdef RT_OS_WINDOWS
-/**
- * The Win32/Win64 hosted USB Proxy Service.
- */
-class USBProxyServiceWin32 : public USBProxyService
-{
-public:
- USBProxyServiceWin32 (HostUSB *aHost);
- ~USBProxyServiceWin32();
-
- virtual int captureDevice (HostUSBDevice *aDevice);
- virtual int holdDevice (HostUSBDevice *aDevice);
- virtual int releaseDevice (HostUSBDevice *aDevice);
- virtual int resetDevice (HostUSBDevice *aDevice);
-
-protected:
- virtual int wait (unsigned aMillies);
- virtual int interruptWait (void);
- virtual PUSBDEVICE getDevices (void);
-
-private:
-
- HANDLE hEventInterrupt;
-};
-#endif
-
-
-#endif /* !____H_USBPROXYSERVICE */