예제 #1
0
        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;
        }
예제 #2
0
        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);
                        }
            );

        }
예제 #3
0
        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);
                        }
            );
        }