Page MenuHomePhabricator

Use MicroServices for ToFHardware devices
Closed, ResolvedPublic

Description

The MicroServices library offers powerful functions for our hardware devices. The existing interface (mitkToFCameraDevice) can be used as MicroServices. Every connected device can be registered at a central ModuleContext. As a consequence, all registered devices will be available via the ToFHardware ModuleContext.

Pros:
-Things like the ToFConnectionWidget can listen to registrations or can ask the ModuleContext which devices are connected/available.
-External projects (like mbi or ritk) can implement mitkToFCameraDevice's and be registered in order to be visible in the public ToFConnectionWidget
-Devices can be shared over multiple views

Event Timeline

As a first step, each device should be registered by default to the ModuleContext of ToFHardware.

Since the current implementation of ConnectCamera() is pure virtual, this is a bit tricky. We use a design pattern as follows:

  1. The interface (mitkToFCameraDevice) has two method signatures now:

-ConnectCamera()
Interface implementation of the registration, which calls OnConnectCamera() of the subclass.
-OnConnectCamera() = 0
Private implementation of the connection to hardware by the respective subclass.

As a result all ConnectCamera() methods in the subclasses have to be renamed to the new pure virtual method OnConnectCamera(), but the calls in all functionalities to ConnectCamera(), which calls OnConnectCamera() and performs the context registration, remain the same.

Changes pushed to:
bug-12100-MicroServicesForToFHardware

Next, a new connection widget should be implemented which listens to changes to the registered ToFHardware devices.

New remote branch pushed: bug-12100-MicroServicesWithKinectFix

New remote branch pushed: bug-12100-ToFUtilWithFixedMicroServices

New remote branch pushed: bug-12100-FinalIntegration

[edff3e]: Merge branch 'bug-12100-FinalIntegration'

Merged commits:

2012-11-26 16:31:35 Justin Iszatt [2d6e07]
Merge branch 'bug-12100-ToFUtilWithFixedMicroServices'

Conflicts:
CMakeExternals/MITKData.cmake
Modules/ToFHardware/Kinect/mitkKinectDevice.h
Modules/ToFHardware/MesaSR4000/mitkToFCameraMESAController.cpp
Modules/ToFHardware/PMD/Testing/mitkToFCameraPMDPlayerControllerTest.cpp
Modules/ToFHardware/PMD/Testing/mitkToFCameraPMDPlayerDeviceTest.cpp
Modules/ToFHardware/PMD/mitkThreadedToFRawDataReconstruction.cpp
Modules/ToFHardware/PMD/mitkToFCameraPMDCamBoardController.h
Modules/ToFHardware/PMD/mitkToFCameraPMDController.cpp
Modules/ToFHardware/PMD/mitkToFCameraPMDDevice.cpp
Modules/ToFHardware/mitkToFCameraMESAControllerStub.cpp
Modules/ToFHardware/mitkToFCameraMESASR4000ControllerStub.cpp
Modules/ToFHardware/mitkToFCameraMITKPlayerDevice.h
Modules/ToFHardware/mitkToFCameraPMDCamBoardControllerStub.cpp
Modules/ToFHardware/mitkToFCameraPMDCamCubeControllerStub.cpp
Modules/ToFHardware/mitkToFCameraPMDControllerStub.cpp
Modules/ToFHardware/mitkToFCameraPMDMITKPlayerController.cpp
Modules/ToFHardware/mitkToFCameraPMDMITKPlayerController.h
Modules/ToFHardware/mitkToFCameraPMDMITKPlayerControllerStub.cpp
Modules/ToFHardware/mitkToFCameraPMDMITKPlayerDevice.cpp
Modules/ToFHardware/mitkToFCameraPMDMITKPlayerDevice.h
Modules/ToFHardware/mitkToFCameraPMDO3ControllerStub.cpp
Modules/ToFHardware/mitkToFCameraPMDPlayerControllerStub.cpp
Modules/ToFHardware/mitkToFHardware.cmake
Modules/ToFUI/Qmitk/QmitkToFConnectionWidget.cpp
Modules/ToFUI/Qmitk/QmitkToFConnectionWidget.h


2012-11-26 15:06:45 Justin Iszatt [4f80ca]
Last changes before merge to mast.


2012-11-20 17:06:41 Justin Iszatt [a574c6]
Changed the target path of mitkToFPMDConfig.
Due to those change Module works.
Did some cleanup, too


2012-11-19 16:04:16 Justin Iszatt [df542a]
Deleted all stubs, adapted testing, introduced mitkToFPMDConfig.h.


2012-11-19 15:08:19 Justin Iszatt [bad5c5]
Renamed MesaModuleActivator


2012-11-12 16:09:33 Justin Iszatt [e1e732]
Deleted the ToFConnectionWidget2 and replaced the now deprecated
ToFConnectionWidget. With those changes, we finally got the new
ToFGenerationWidget implemented and did lots of changes in the ToF-Part of
MITK.


2012-11-12 11:46:51 Justin Iszatt [354e93]
Changed a O3Variable and managed to get CamCube running.
Testing the Devices to work correctly and going to have a close look into
PMD stuff.If everything works fine, i will be ready to merge to the master.


2012-11-09 16:03:18 Justin Iszatt [5c6008]
Did some cleaning today and going to delete the old ToFConnectionWidget
on monday.In the final Version it should be replaced by a new
ToFConnectionWidget-formally known as ToFConnectionWidget2


2012-11-09 10:31:16 Justin Iszatt [d5ede9]
Merge branch 'bug-12100-MicroServicesWithKinectFix'

Conflicts:
Plugins/org.mitk.gui.qt.tofutil/src/internal/QmitkToFUtilView.cpp


2012-11-08 15:27:01 Justin Iszatt [66d35d]
Gui-elements are not flickering anymore and Kinect finally works


2012-11-08 11:06:46 Justin Iszatt [142ab1]
Did some clean up and ported a bug-fix concerning
the measurement-section of ToFUtil.
Now going to have a look at the flashing
property-widgets on slecting an other device


2012-11-06 10:48:47 Justin Iszatt [6ef4d0]
Put in some code to automatically de and reactivating dlls.
Except that kinect and camcube are not working right now,
we are ready to merge. Looking closer in Alex fix for kinect
will be the next step.


2012-11-05 14:51:43 Justin Iszatt [ba6f3b]
Implemented the PMD Module the way Thomas intended.
After some BugFixes we will most likely merge the branch to the master


2012-11-02 10:11:45 Justin Iszatt [2535e7]
Did not understand my task in the first place. Now going to work out a
single module idea with an integrated logic to check out which device the
user wants to use and to setup everything


2012-10-26 13:54:24 Justin Iszatt [023943]
Still working on the proper CMake.List structure...
Hopefully i will find out something today. Otherwise I will have to wait
for Thomas to help me out.


2012-10-19 13:06:01 Justin Iszatt [4083c4]
Added some dependencies for the cmake lists and made a few more
comments on the ConnectionWidget2


2012-10-16 15:57:00 Justin Iszatt [03539d]
Tried splitting the PMD devices in several Modules.NO Succes

I will have to talk to Thomas...
ToDo for now will be getting Alex Fix-For-The-Kinect to work on my branch


2012-10-12 16:56:57 Justin Iszatt [fd2ffc]
Merge branch 'bug-12100-MergeToMaster' into bug-12100-MicroServicesWithKinectFix

Conflicts:
Modules/ToFUI/Qmitk/QmitkToFConnectionWidget.cpp
Plugins/org.mitk.gui.qt.tofutil/src/internal/QmitkToFUtilView.cpp


2012-10-10 10:59:41 Justin Iszatt [85aec4]
Did some documentation and for the code
Checked the web for deprecating classes.

Due to bug-squashing I am doing a push here, too


2012-10-08 10:39:04 Justin Iszatt [46cc03]
Deleted some of the PMDSubfolders and began cleaning up the cmakeFiles.
Aswell started working on the documentation of QmitkToFConnectionWidget2.
I will soon be declaring QmitkToFConnectionWidget as depricated.


2012-10-05 16:38:57 Justin Iszatt [efaf54]
QmitkToFConnectionWidget2 finally implemented.
Things are not running as smoth as they could,
tweaking some stuff is going to be done, soon


2012-09-26 13:27:59 Justin Iszatt [249eea]
temp commit to store changes
-work in progress

later use amend


2012-09-26 10:48:13 Justin Iszatt [65f6c2]
Initizialisation works fine now, one of each devices is produced on stat-up
Iteration of deviceNumber works, too. As well began working on embedding
the ToFConnectionWidget in ToFUtilView.

Todo:
Using static const std::strings TOF_INTERFACE_ID to hand over strings to
the ConnectionWidget


2012-09-24 17:22:23 Justin Iszatt [884b59]
Implemented the ConnectionWidget, renamed it and changed some other stuff.

Thomas as well did lots of comments while looking at the
QmitkToFConnectionWidget2. After going through all of them, kenos
widget should work directly.

So todo will be initializing and getting stuff to work


2012-09-24 14:52:48 Justin Iszatt [d42eb8]
Started moding the QmitkToFConnectionWidget to use kenos widget(instead of
a Combobox) not finished yet, but update on the way.
later renameing Widget would be nice


2012-09-24 10:58:15 Justin Iszatt [bbc32a]
Tried to implement one of each device on start-up.
For some reason ExtApp crashes. So just a work in progress commit changes.

Next-Up: Exchanging the ToFUtil widget


2012-09-20 13:53:04 Justin Iszatt [27617e]
Trouble with cams-commit
For some reason lots of troubles....
tried to solve some..did not work to well
going to do the initizialization on start-up, now


2012-09-18 15:47:26 Justin Iszatt [7d2f7c]
Finally change the name of ToFConnectionView to ToFDeviceGeneration

next step will be producing one device per factory on startup


2012-09-17 16:01:24 Justin Iszatt [baf9fc]
Icons of ToFUtil changed.
Now going to rename the ToFConnectionView


2012-09-17 14:41:06 Justin Iszatt [c2c2b6]
Merge branch 'bug-12100-MicroServiceToTheRescue' into bug-12100-MergeToMaster

Conflicts:
Modules/ToFHardware/Testing/files.cmake
Plugins/org.mitk.gui.qt.ultrasound/src/internal/UltrasoundSupport.cpp


2012-09-17 13:49:39 Justin Iszatt [2b8b4f]
Commit before getting master


2012-09-17 10:38:03 Justin Iszatt [c55634]
Renamed mitkMesaSR4000Module and did some other changes.
Now going to get a new version of the master


2012-09-14 10:29:57 Justin Iszatt [12897b]
Troubles with MesaSr4000-not working in x64
Pushing branch to test on win 32.


2012-09-13 10:24:18 Justin Iszatt [e57c38]
Reimplemented all PMD-Tests
-going to rename module now


2012-09-12 12:46:37 Justin Iszatt [4b195e]
Put all PMD Devices in the still wrong named MiniModule
and reactivated the tests.

Todo: Changing the name of our MiniModule
and getting more of them (one per device)


2012-09-12 10:54:04 Justin Iszatt [06a627]
Sub-Module O3D generated.

Todo: implementing the others, reactivating all test
and as long-range objective: renaming the MiniModule PMDCamcubeModule
to PMDModule


2012-09-11 17:06:47 Justin Iszatt [69eaac]
First MiniModul: KinectModule generated
Started working on the PMD-Module as a container for several
sub-pmd devices as the Camcube.


2012-09-06 17:58:52 Justin Iszatt [3fd7a6]
First MiniModul implemented.
Kinect work well!
Todo:
Putting the other Microservices togther


2012-09-05 15:32:02 Justin Iszatt [d43503]
Changed the factory names to fit the defiened requirements.

Todo: Change the devic names in a nice way


2012-08-31 14:09:19 Justin Iszatt [5a7851]
Did some more chnages on Gui


2012-08-31 10:09:22 Justin Iszatt [f71297]
ToFDevice-Names are showing up in the second widget in ConnectionView now,
Thomas implemented a new Connect-Button in ToFUtil.

TODO:
Changing the layout in ConnectView-GUI and putting in the actual
device-name (not the class name) in the widget


2012-08-29 18:29:00 Justin Iszatt [73e9cc]
Troubles resolved.
Push available again


2012-08-29 18:00:12 Justin Iszatt [3019c6]
Tried to rescue justins work.

[782b29]: Merge branch 'bug-12100-FinalIntegration'

Merged commits:

2012-11-28 10:01:35 Thomas Kilgus [a7234a]
Outcommented test due to issues with mitkToFConfig.h

Todo's are:
-reactive the mitkToFImageDownsamplingFilterTest which did not run due to the wrong generation of mitkToFConfigi.h.
-try to run kinect and camcube with all test protocols in Linux
-finish the documentation

[806200]: Merge branch 'bug-12100-FinalIntegration'

Merged commits:

2012-11-28 13:40:41 Thomas Kilgus [43db56]
Added export macro to IToFDeviceFactory, methods in AbstractToFDeviceFactory are now in the cpp.

[2a8677]: Merge branch 'bug-12100-BugFixes'

Merged commits:

2012-11-29 17:17:57 Justin Iszatt [352df8]
Fixed and reactivated failing downsampling filter test.

[f133d3]: Merge branch 'bug-12100-FinalIntegration'

Merged commits:

2012-12-06 17:36:42 Alexander Seitel [110860]
Some GUI changes to widgets used in ToFUtil


2012-12-05 20:50:58 Alexander Seitel [5abc73]
Changed layout of connection widget


2012-12-05 20:21:31 Alexander Seitel [6b6bf6]
Initialize ToFCompositeFilterWidget after creating new object of ToFCompositeFilter


2012-12-05 16:27:04 Alexander Seitel [2168f1]
Correctly handle IR image


2012-12-05 16:19:22 Alexander Seitel [4b72ed]
Changed names of cameras


2012-12-05 15:58:50 Alexander Seitel [c64ef0]
Correctly re-initialize ToFImageGrabber in OnConnectCamera()


2012-12-05 15:58:19 Alexander Seitel [3d9589]
Correctly evaluate return value of hardware interface in KinectController