diff --git a/Modules/US/Documentation/doxygen/USModule.dox b/Modules/US/Documentation/doxygen/USModule.dox
index 63a0e59742..f656852eab 100644
--- a/Modules/US/Documentation/doxygen/USModule.dox
+++ b/Modules/US/Documentation/doxygen/USModule.dox
@@ -1,87 +1,124 @@
/**
\page USModulePage The Ultrasound Module
\section USModulePageOverview Overview
The Ultrasound Module provides a microservice based API for ultrasound devices.
The main features are:
- Microservice-enabled life cycle management, allowing other modules to easily consume USDevice-functionality.
- Handling and processing of ultrasound image data
- Metadata for ultrasound images
- USVideoDevice class which allows to connect any ultrasound device with a video-out via a Frame grabber
- Fast image preprocessing capabilities (Grey Scale Conversion, Cropping) via OpenCV
-
- Advanced image processing functions via mitk filters.
+
- Advanced image processing functions via mitk filters.
- Connection of API-Enabled devices (specifically the Telemed LogicScan 128 is implemented)
- - Control of API-enabled Devices via MITK (Widgets for basic B mode controls and probe selection are available)
+
- Control of API-enabled Devices via MITK (Widgets for basic B mode controls and probe selection are available)
- Designed to interact with the \link IGTGeneralModulePage IGT Module \endlink for tracking functionality.
This module requires OpenCV to be enabled in the superbuild options via CMAKE.
Its functionality is made available to the User via the \link org_mitk_gui_qt_ultrasound UltrasoundSupport Plugin \endlink
\section USDeviceHierarchy Ultrasound Device Hierarchy
Ultrasound Devices are managed in a simple hierarchy:
\image html USHierarchy.png
- mitk::USDevice: The common superclass for all ultrasound devices. Deriving from this class will make sure that US-specific GUI-Components will be able to interact with your class.
Especially, the Microservice Life cycle is modeled in this Module.
- mitk::USVideoDevice: This class can be used for every Ultrasound device that is connected to the PC via a Frame grabber or similar Video input device. It offers image preprocessing functionality via OpenCV.
The \link org_mitk_gui_qt_ultrasound UltrasoundSupport Plugin \endlink enables the user to create USVideoDevice.
There also is a reusable Widget for this Task in the USUI Module.
- mitk::USApiDevice: This is a work-in-progress class that will contain a common superclass for Devices with API support.
\section USDeviceLifeCycle USDevice Life Cycle
Once you a USDevice is constructed, it can be connected via call to mitk::USDevice::Connect().
This will cause the Device to register itself in the Microservice Framework and will make the device available to other Modules, the UltrasoundSupport Plugin and the USDeviceManagerWidget in the USUI Module.
The Connect() method is not virtual and should never be overwritten.
Instead, override mitk::USDevice::OnConnect(), which will be called during the connection Process and enables you to react to this event.
A connected device is available to other modules, but is not acquiring image data.
Analogously to Connect, there is a function mitk::USDevice::Activate which will start the image acquisition.
Again, this method is not virtual, override mitk::USDevice::OnActivate to react to activation.
Matching functions mitk::USDevice::Disconnect(), mitk::USDevice::OnDisconnect, mitk::USDevice::Deactivate, mitk::USDevice::OnDeactivate exist as well.
The following diagram illustrates the situation:
\image html USLifecycle.png
The blue message symbols indicate that the corresponding method of the subclass is called to react to the event.
\section USControlInterfaces Control Interfaces for API Devices
Capabilities of API-based ultrasound devices are available through control interfaces which are shown below:
\image html USControlInterfaces.png
The control interfaces mitk::USControlInterfaceProbes and mitk::USControlInterfaceBMode are available, while mitk::USControlInteraceDoppler is empty at the moment. Every sublcass of mitk::USDevice can use an implementation of each of these interfaces, but this is not necessary. The mitk::USVideoDevice for examples uses a custom control interface only, which is a subclass of mitk::USAbstractControlInterface.
Each custom control interface needs its own Widget (subclassed of QmitkUSAbstractCustomWidget). For mitk::USControlInterfaceProbes, mitk::USControlInterfaceBMode and mitk::USControlInterfaceDoppler there are Widgets available in the USUI module (QmitkUSControlsProbesWidget, QmitkUSControlsBModeWidget, QmitkUSControlsDopplerWidget) which can be used by plugins. Each Widget must get an object of the corresponding control interface on its constructor call. A class diagram showing how the Widgets are connected to the control interfaces can be seen below:
\image html USControlWidgets.png
A plugin can use the Widgets by creating a new object of the Widget and setting the corresponding interface object of the mitk::USDevice which should be controlled. How to use custom widgets is described in the class documentation of QmitkUSConcreteCustomWidget.
\section USDWidgets Available Widgets
There are some Widgets available that can be used for plugin development: a device management Widget, a Widget for creating new mitk::USVideoDevice objects and widgets for the control interfaces of API device.
The usage of the Widgets is described in more detail in the \link org_mitk_gui_qt_ultrasound UltrasoundSupport Plugin Documentation\endlink.
\subsection USQmitkUSDeviceManagerWidget QmitkUSDeviceManagerWidget
The QmitkUSDeviceManagerWidget can view every connected mitk::USDevice and allows the user to activate and deactivate devices. Additionally mitk::USVideoDevice can be created using the QmitkNewVideoDeviceWidget and removed by a corresponding button.
\subsection USQmitkNewVideoDeviceWidget QmitkNewVideoDeviceWidget
The QmitkNewVideoDeviceWidget allows the user to configure a frame grabber or other video input as a mitk::USVideoDevice.
\subsection USControlInterfaceWidgets Control Interface Widgets
+\section USHardwareTelemed Controlling API Devices of Telemed
+
+The features of ultrasound devices of Telemed can be controlled directly via
+the Ultrasound Module. At the moment, some controls for the b mode are
+implemented. The device used for development was the "Telemed LogicScan 128". A
+graphical user interface is integrated into the Ultrasound Plugin.
+
+\subsection USHardwareTelemedInstall Install the Telemed SDK
+
+The Telemed SDK cannot be shipped with MITK due to legal issues. Instead it can
+be obtained directly from Telemed. MITK was tested with API version 3.9.0
+(2013-02-04).
+The following packages must be installed:
+
+ - Telemed Drivers Package (MITK was tested with version 1.13.7)
+ - Usgfw2 SDK Redistributable (usgfwsetup.exe)
+
+
+For MITK the file "usgfw2.tlh" is needed. This file may be available in one of
+the examples folders of the SDK. If not it can be generated by compiling one of
+the delivered examples (samples_cpp_vs2005).
+
+\subsection USHardwareTelemedEnable Enable the Telemed API
+
+To use a Telemed device, activate the corresponding CMake flag:
+MITK_USE_US_TELEMED_SDK. After a run of CMake the new CMake variable
+MITK_US_TELEMED_SDK_PATH has to be set to a directory containing the header
+files of the Telemed SKD (from "SDK\include\USGFWSDK\include") and the file
+"usgfw2.tlh" (see previous section). Afterwards MITK can be configured and
+build as usual.
+
+\subsection USHardwareTelemedUse Use a Telemed device
+
+As soon as the ultrasound module is loaded the device will be made available as
+a microservice. It can be got from the service registry then and the Ultrasound
+Plugin shows the device as an available ultrasound device.
+
*/
\ No newline at end of file