Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        //     public event EventHandler AutoSkip;

        /// <summary>
        ///
        /// </summary>
        //       public event EventHandler DeviceIDRequest;

        /// <summary>
        ///
        /// </summary>
        //       public event EventHandler EraseSegment;

        /// <summary>
        ///
        /// </summary>
//        public event EventHandler IDStatusRequest;

        /// <summary>
        ///
        /// </summary>
        //       public event EventHandler ListFirstID;

        /// <summary>
        ///
        /// </summary>
//        public event EventHandler ListNextID;

        /// <summary>
        ///
        /// </summary>
//        public event EventHandler LongestContiguousStorageRequest;

        /// <summary>
        ///
        /// </summary>
//        public event EventHandler SetDeviceID;

        #endregion

        /// <summary>
        /// </summary>
        /// <param name="request">
        ///     The request.
        /// </param>
        /// <returns>
        ///     The <see cref="CommandBlock" />.
        /// </returns>
        protected override CommandBlock ProcessRequest(CommandBlock request)
        {
            CommandBlock response = new AckCommandBlock();

            var handled = false;

            switch (request.Cmd1)
            {
            case Cmd1.SystemControl:
                break;

            case Cmd1.TransportControl:
                switch ((TransportControl)request.Cmd2)
                {
                case TransportControl.CueUpWithData:
                    switch (request.DataCount)
                    {
                    case 0x0:
                        RaiseCueUpWithData(request.DataCount, request.Data);
                        handled = true;
                        break;

                    case 0x8:
                        RaiseCueUpWithData(request.DataCount, request.Data);
                        handled = true;
                        break;

                    case 0xC:
                        RaiseCueUpWithData(request.DataCount, request.Data);
                        handled = true;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    break;
                    //case TransportControl.InPreset:
                    //    switch (request.DataCount)
                    //    {
                    //        case 0x8:
                    //            RaiseInPreset(request.DataCount, request.Data);
                    //            handled = true;
                    //            break;
                    //    }
                    //    break;
                }
                break;

            case Cmd1.PresetSelectControl:
                switch ((PresetSelectControl)request.Cmd2)
                {
                case PresetSelectControl.InDataPreset:
                    RaiseInDataPreset(request.DataCount, request.Data);
                    handled = true;
                    break;

                case PresetSelectControl.OutDataPreset:
                    RaiseOutDataPreset(request.DataCount, request.Data);
                    handled = true;
                    break;
                }
                break;

            case Cmd1.SenseRequest:
                break;

            case Cmd1.SenseReturn:
                break;

            case Cmd1.Return:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(!handled?base.ProcessRequest(request) : response);
        }
Beispiel #2
0
        /// <summary>
        /// </summary>
        /// <param name="request">
        ///     The request.
        /// </param>
        /// <returns>
        ///     The <see cref="CommandBlock" />.
        /// </returns>
        protected virtual CommandBlock ProcessRequest(CommandBlock request)
        {
            CommandBlock response = new AckCommandBlock();

            switch (request.Cmd1)
            {
            case Cmd1.SystemControl:
                switch ((SystemControl)request.Cmd2)
                {
                case SystemControl.LocalDisable:
                    RaiseLocalDisable();
                    break;

                case SystemControl.DeviceTypeRequest:
                    response = DeviceTypeRequest();
                    break;

                case SystemControl.LocalEnable:
                    RaiseLocalEnable();
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;

            case Cmd1.TransportControl:
                switch ((TransportControl)request.Cmd2)
                {
                case TransportControl.Stop:
                    RaiseStop();
                    break;

                case TransportControl.Play:
                    RaisePlay();
                    break;

                case TransportControl.Record:
                    RaiseRecord();
                    break;

                case TransportControl.StandbyOff:
                    RaiseStandbyOff();
                    break;

                case TransportControl.StandbyOn:
                    RaiseStandbyOn();
                    break;

                case TransportControl.Eject:
                    RaiseEject();
                    break;

                case TransportControl.FastFwd:
                    RaiseFastFwd();
                    break;

                case TransportControl.JogFwd:
                    RaiseJogFwd();
                    break;

                case TransportControl.VarFwd:
                    RaiseVarFwd();
                    break;

                case TransportControl.ShuttleFwd:
                    RaiseShuttleFwd();
                    break;

                case TransportControl.Rewind:
                    RaiseRewind();
                    break;

                case TransportControl.JogRev:
                    RaiseJogRev();
                    break;

                case TransportControl.VarRev:
                    RaiseVarRev();
                    break;

                case TransportControl.ShuttleRev:
                    RaiseShuttleRev();
                    break;

                case TransportControl.Preroll:
                    RaisePreroll();
                    break;

                case TransportControl.CueUpWithData:
                    RaiseCueUpWithData(request.Data);
                    break;

                case TransportControl.InDataPreset:
                    RaiseInDataPreset(request.Data);
                    break;

                case TransportControl.OutDataPreset:
                    RaiseOutDataPreset(request.Data);
                    break;

                case TransportControl.AudioInDataPreset:
                    break;

                case TransportControl.AudioOutDataPreset:
                    break;

                case TransportControl.SyncPlay:
                    break;

                case TransportControl.ProgSpeedPlayPlus:
                    break;

                case TransportControl.ProgSpeedPlayMin:
                    break;

                case TransportControl.Preview:
                    break;

                case TransportControl.Review:
                    break;

                case TransportControl.AutoEdit:
                    break;

                case TransportControl.OutpointPreview:
                    break;

                case TransportControl.AntiClogTimerDisable:
                    break;

                case TransportControl.AntiClogTimerEnable:
                    break;

                case TransportControl.FullEEOff:
                    break;

                case TransportControl.FullEEOn:
                    break;

                case TransportControl.SelectEEOn:
                    break;

                case TransportControl.EditOff:
                    break;

                case TransportControl.EditOn:
                    break;

                case TransportControl.FreezeOff:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;

            case Cmd1.PresetSelectControl:
                break;

            case Cmd1.SenseRequest:
                switch ((SenseRequest)request.Cmd2)
                {
                case SenseRequest.TcGenSense:
                    response = TcGenSense((TimeSenseRequest)request.Data[0]);
                    break;

                case SenseRequest.CurrentTimeSense:
                    response = CurrentTimeSense((TimeSenseRequest)request.Data[0]);
                    break;

                case SenseRequest.StatusSense:
                    var start  = (request.Data[0] & 0xF0) >> 4;
                    var length = request.Data[0] & 0x0F;
                    response = StatusSense(start, length);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                break;

            default:
                response = new NakCommandBlock(NakCommandBlock.Nak.UndefinedError);
                break;
            }

            return(response);
        }