Professional Documents
Culture Documents
OpenSDC Tutorial V1.0 Beta01
OpenSDC Tutorial V1.0 Beta01
Medizingeräten
openSDC Tutorial
for openSDC-V1.0-beta01
1. JDPWS
2. MDPWS
3. MDPWS
Please read the technical whitepaper and have a look at the BICEPS Message
Information Model in order to get a better understanding of the architecture
and protocols that are utilized in openSDC.
Documentation on sourceforge
In the end …
The ideas behind the BICEPS Message Information Model are clear
You should be able to develop a device description as XML-File
– Example files are included in the tutorial material
In this tutorial we develop a simple device that will provide its description to
clients and an initial state
– Develop a device based on openSDC
– Learn how to use DPWS Explorer for simple testing
Let‘s start
File -> New -> Maven Project
Quickstart archetype
– GroupID=openSDC
– ArtefactID=openSDCDevice01
Start coding…
Add two classes
• MyMedicalDeviceNodeInterface
• MyMedicalCommunicationInterface
MyDeviceNodeInterface will
• provide the description of the capabilities (2) and an initial state (2) to the
openSDC middleware by implementing the relevant interfaces (3),(4)
17 | An architecture for distributed systems of medical devices in high-acuity environments
A simple device
MyMedicalCommunicationInterface
MyMedicalCommunicationInterface will
• provide the MyMedicalNodeInterface to the openSDC middleware during
startup phase (1) by extending a default implementation (2)
• Receive information about the startup state in callback methods (3)
OpenSDCDevice01App will
• Instantiate the MyMedicalCommunicationInterface (1)
• Start the application thread (2)
Starting the openSDCDevice01App, the console should look like this
(1)BICEPS services and the endpoints
(2)DeviceUUID configured
that are configured in the mdpws.properties
20 | An architecture for distributed systems of medical devices in high-acuity environments
A simple device
Test the simple Device using the DPWS Explorer
• Retrieve the current MDIB (GetMDIB, 1) utilizing the method and the
“Invoke Operation” (3) on Parameter Tree tab (2).
• Description and states (4)
In this tutorial we develop a simple client that will interact with the simple
device
– Discovery of devices
– Register to changes of metrics
Let‘s start
File -> New -> Maven Project
Quickstart archetype
– GroupID=openSDC
– ArtefactID=openSDCClient
dependencies (1)
• Add de.draeger.run:BICEPS 1.0-
BETA_01 as dependency
MyClientApplication will
• Use the client interface of the
framework in order to probe
(search) for medical devices
implementing BICEPS (1)
• Provide a simulated application
thread in order to not be shut-down
while waiting for the probe
response
MyMDIBListener will
• Implement MdibListener interface in order to receive a callback when a new
BICEPS device has been found (1), a BICEPS device is removed (2) from
the environment or a probe timesout without having a matching BICEPS
device found (3)
27 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
config/mdpwsClient.properties
• Create a config folder & copy mdpwsClient.properties from tutorial material
to the folder (1)
• Update referenced network interface (2) for receiving events
• HTTPBinding\AddressGroup
• Take a network interface that may by reached by the device with IP
multicast messages
• App will
• Start the client framework (1)
• Register MyMDIBListener with the client framework (2) and enable Plug &
Play search (3)
• Start MyClientApplication (4) and hence start a discovery process
29 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
App
Starting App, the console should look like this
(1) Setting up discovery binding
(2) If a BICEPS device is still running, this will be announced to the console by
MyMDIBListener
30 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
MyMetricListener
MyMetricListener will
• receive information about changed metrics (1) by implementing the
MetricListener callback interface (2)
• print the unique proxy id for the changed metrics (3)
31 | An architecture for distributed systems of medical devices in high-acuity environments
A simple client
MyMDIBListener
Update MyMyMDIBListener in order to display
(1) display some information about the discovered BICEPS device
(2) subscribe to changes to the metric of a discovered BICEPS device
Failed because the BICEPS device does not handle the request.
In this tutorial we develop a device that will have the capabilities of the simple
device and
– Will handle remote invocation requests
Let‘s start
File -> New -> Maven Project
Quickstart archetype
– GroupID=openSDC
– ArtefactID=openSDCDevice02
Update Configuration
• Copy config & description folder from simple Device
• Change the UUID according to the output of the
configuration app (2)
• Modify the port for each binding in the config so that
don’t overlap with the simple device (3)
Create MyCommandProcessingTask
(1) by extending CommandProcessingTask
(2) that will handle remote invocation requests
(3) use a notification queue to send updates to the state of the device to the
openSDC middleware
39 | An architecture for distributed systems of medical devices in high-acuity environments
A second device
MySetHandler
Create MySetHandler
(1) by extending DefaultCommandHandler
(2) that specifies which requests it handles and sends
(3) and setups the command task that will handle the request
Update MyMedicalCommunicationInterface
(1) by create the CommandProcessingTask
(2) add it as a handler
That’s it for now!
(1) Invoke the set operation on the new device in the DPWS explorer.
(2) The operation should be in Waiting state
(3) The command should be printed into the console of the device.
(1) Notify the clients that the processing was started
(2) Find the state and modify it
(3) Send a message to the middleware
(1) Notify the clients that the processing was finished or failed
(2) This is how the state is modified.
Restart the device and the client. Afterwards…
(1) Invoke the set operation on the new device in the DPWS explorer.
(2) The operation should be in Waiting state
(3) The change of the metric should be printed into the console of the client.
Contact
Dr. Stefan Schlichting
Research Unit, Drägerwerk AG
stefan.schlichting@draeger.com