18 #ifndef __igstkVideoImager_h
19 #define __igstkVideoImager_h
24 #include "itkMutexLock.h"
25 #include "itkConditionVariable.h"
26 #include "itkMultiThreader.h"
50 igstkEventMacro( VideoImagerInitializeErrorEvent, VideoImagerErrorEvent);
53 igstkEventMacro( VideoImagerStartImagingErrorEvent, VideoImagerErrorEvent);
56 igstkEventMacro( VideoImagerStopImagingErrorEvent, VideoImagerErrorEvent);
59 igstkEventMacro( VideoImagerUpdateStatusErrorEvent, VideoImagerErrorEvent);
193 virtual void PrintSelf( std::ostream& os, itk::Indent indent )
const;
220 typedef std::map< std::string, VideoImagerToolType *>
257 void operator=(
const Self&);
263 typedef itk::SimpleMemberCommand< Self > ObserverType;
264 ObserverType::Pointer m_PulseObserver;
271 typedef VideoImagerToolType::Pointer VideoImagerToolPointer;
278 bool m_ThreadingEnabled;
282 bool m_ImagingThreadStarted;
285 itk::MultiThreader::Pointer m_Threader;
292 itk::ConditionVariable::Pointer m_ConditionNextFrameReceived;
296 itk::SimpleMutexLock m_LockForConditionNextFrameReceived;
299 igstkDeclareStateMacro( Idle );
300 igstkDeclareStateMacro( AttemptingToEstablishCommunication );
301 igstkDeclareStateMacro( AttemptingToCloseCommunication );
302 igstkDeclareStateMacro( CommunicationEstablished );
303 igstkDeclareStateMacro( AttemptingToAttachVideoImagerTool );
304 igstkDeclareStateMacro( VideoImagerToolAttached );
305 igstkDeclareStateMacro( AttemptingToImaging );
306 igstkDeclareStateMacro( Imaging );
307 igstkDeclareStateMacro( AttemptingToUpdate );
308 igstkDeclareStateMacro( AttemptingToStopImaging );
311 igstkDeclareInputMacro( EstablishCommunication );
312 igstkDeclareInputMacro( StartImaging );
313 igstkDeclareInputMacro( AttachVideoImagerTool );
314 igstkDeclareInputMacro( UpdateStatus );
315 igstkDeclareInputMacro( StopImaging );
316 igstkDeclareInputMacro( Reset );
317 igstkDeclareInputMacro( CloseCommunication );
318 igstkDeclareInputMacro( ValidFrequency );
320 igstkDeclareInputMacro( Success );
321 igstkDeclareInputMacro( Failure );
331 static ITK_THREAD_RETURN_TYPE ImagingThreadFunction(
void* pInfoStruct);
336 void UpdateStatus(
void );
340 void AttemptToOpenProcessing(
void );
344 void AttemptToStartImagingProcessing(
void );
347 void AttemptToStopImagingProcessing(
void );
351 void AttemptToAttachVideoImagerToolProcessing(
void );
355 void AttemptToUpdateStatusProcessing(
void );
359 void UpdateStatusSuccessProcessing(
void );
363 void UpdateStatusFailureProcessing(
void );
367 void CloseFromImagingStateProcessing(
void );
371 void CloseFromCommunicatingStateProcessing(
void );
375 void ResetFromImagingStateProcessing(
void );
379 void ResetFromToolsActiveStateProcessing(
void);
383 void ResetFromCommunicatingStateProcessing(
void );
386 void CommunicationEstablishmentSuccessProcessing(
void );
389 void CommunicationEstablishmentFailureProcessing(
void );
392 void ToolsActivationSuccessProcessing(
void );
395 void ToolsActivationFailureProcessing(
void );
398 void StartImagingSuccessProcessing(
void );
401 void StartImagingFailureProcessing(
void );
405 void AttachingVideoImagerToolSuccessProcessing(
void );
409 void AttachingVideoImagerToolFailureProcessing(
void );
412 void StopImagingSuccessProcessing(
void );
415 void StopImagingFailureProcessing(
void );
418 void CloseCommunicationSuccessProcessing(
void );
421 void CloseCommunicationFailureProcessing(
void );
424 void EnterImagingStateProcessing(
void );
427 void DetachAllVideoImagerToolsFromVideoImager();
430 void ReportInvalidRequestProcessing(
void );
433 void SetFrequencyProcessing(
void );
437 igstkCoordinateSystemClassInterfaceMacro();
441 double m_FrequencyToBeSet;
446 #endif //__igstk_VideoImager_h_