public IEnumerator <ITask> PanTiltOperationHandler(pxPT.PanTiltOperation op) { pxPT.PanTiltOperationRequest req = op.Body; LogInfo("Received request: " + req.OperationType.ToString()); switch (req.OperationType) { case pxPT.PanTiltOperationRequest.OpType.MoveDown: MoveBottom(_state.CamID); break; case pxPT.PanTiltOperationRequest.OpType.MoveLeft: MoveLeft(_state.CamID); break; case pxPT.PanTiltOperationRequest.OpType.MoveRight: MoveRight(_state.CamID); break; case pxPT.PanTiltOperationRequest.OpType.MoveUp: MoveTop(_state.CamID); break; case pxPT.PanTiltOperationRequest.OpType.Reset: MoveHome(_state.CamID); break; } op.ResponsePort.Post(DefaultUpdateResponseType.Instance); yield break; }
IEnumerator<ITask> OnPanTiltMoveHandler(OnPTMove ptm) { LogInfo("OnPanTiltMoveHandler"); pxPanTilt.PanTiltOperationRequest ptreq = new pxPanTilt.PanTiltOperationRequest(); ptreq.OperationType = ptm.PTCommand; pxPanTilt.PanTiltOperation ptop = new pxPanTilt.PanTiltOperation(ptreq); LogInfo("Sending request to PanTilt: " + ptm.PTCommand.ToString()); _pantiltPort.Post(ptop); yield return Arbiter.Choice( ptop.ResponsePort, delegate(DefaultUpdateResponseType response) { LogInfo("PT Command Succeeded"); }, delegate(Fault f) { LogError(f); } ); }
IEnumerator<ITask> OnConnectPanTiltHandler(OnConnectPanTilt onConnectPanTilt) { _pantiltPort = ServiceForwarder<pxPanTilt.GenericPanTiltOperations>(onConnectPanTilt.Service); // Send a reset pxPanTilt.PanTiltOperationRequest resetReq = new pxPanTilt.PanTiltOperationRequest(); resetReq.OperationType = pxPanTilt.PanTiltOperationRequest.OpType.Reset; pxPanTilt.PanTiltOperation resetOp = new pxPanTilt.PanTiltOperation(resetReq); _pantiltPort.Post(resetOp); yield return Arbiter.Choice( resetOp.ResponsePort, delegate(DefaultUpdateResponseType response) { LogInfo("Reset Command Suceeded"); }, delegate(Fault f) { LogError(f); } ); }