/// <summary> /// Service Start /// </summary> protected override void Start() { base.Start(); #region CODECLIP 02-1 _srPort.Subscribe(_srNotify); _xinputPort.Subscribe(_xinputNotify); _blobPort.Subscribe(_blobNotify); Activate <ITask>( Arbiter.Receive <sr.SpeechRecognized>(true, _srNotify, OnSRRecognition), Arbiter.Receive <xinput.ButtonsChanged>(true, _xinputNotify, OnButtonsChanged), Arbiter.Receive <blob.ImageProcessed>(true, _blobNotify, OnImageProcessed)); #endregion }
IEnumerator <ITask> InitializeCamera() { ServiceInfoType info = null; Fault fault = null; yield return(Arbiter.Choice( _blobTrackerPort.DsspDefaultLookup(), delegate(LookupResponse success) { info = success; }, delegate(Fault f) { fault = f; } )); if (fault != null) { LogError(null, "Lookup failed on BlobTracker partner", fault); yield break; } PartnerType camera = FindPartner( new XmlQualifiedName("WebCam", bt.Contract.Identifier), info.PartnerList ); if (camera == null || string.IsNullOrEmpty(camera.Service)) { LogError("No camera partner found for BlobTracker"); yield break; } _webCamPort = ServiceForwarder <cam.WebCamOperations>(camera.Service); yield return(Arbiter.Choice( _webCamPort.Subscribe(_webCamNotify, typeof(cam.UpdateFrame)), delegate(SubscribeResponseType success) { }, delegate(Fault f) { fault = f; } )); if (fault != null) { LogError(null, "Failed to subscribe to webcam", fault); yield break; } yield return(Arbiter.Choice( _blobTrackerPort.Subscribe(_blobTrackerNotify), delegate(SubscribeResponseType success) { }, delegate(Fault f) { fault = f; } )); if (fault != null) { LogError(null, "Failed to subscribe to blob tracker", fault); yield break; } RunForm runForm = new RunForm(CreateVisualization); WinFormsServicePort.Post(runForm); yield return(Arbiter.Choice( runForm.pResult, delegate(SuccessResult success) { }, delegate(Exception e) { fault = Fault.FromException(e); } )); if (fault != null) { LogError(null, "Failed to Create Visualization window", fault); yield break; } base.MainPortInterleave.CombineWith( Arbiter.Interleave( new TeardownReceiverGroup(), new ExclusiveReceiverGroup( Arbiter.Receive <cam.UpdateFrame>(true, _webCamNotify, CameraUpdateFrameHandler), Arbiter.Receive <bt.ImageProcessed>(true, _blobTrackerNotify, BlobTrackerImageProcessedHandler), Arbiter.Receive <Shutdown>(true, _shutdownPort, ShutdownHandler) ), new ConcurrentReceiverGroup( Arbiter.Receive <bt.DeleteBin>(true, _blobTrackerNotify, EmptyHandler), Arbiter.Receive <bt.InsertBin>(true, _blobTrackerNotify, EmptyHandler), Arbiter.Receive <bt.UpdateBin>(true, _blobTrackerNotify, EmptyHandler) ) ) ); }