public SignalTriggerController(
            ITimecodeSettingUseCase timecodeSettingUseCase,
            ITimecodeDecodeUseCase timecodeDecodeUseCase,
            IEndPointSettingUseCase endPointSettingUseCase,
            ISendToEndpointUseCase sendToEndpointUseCase,
            ICommandSettingUseCase commandSettingUseCase,
            IOnAirSettingUseCase onAirSettingUseCase,
            ICommandTriggerUseCase commandTriggerUseCase,
            IGlobalFrameOffsetSettingUseCase globalFrameOffsetSettingUseCase,
            IObsWebsocketSettingUseCase obsSettingUseCase,
            IObsWebsocketCommunicationUseCase obsCommunucationUseCase,
            IOverlayUseCase overlayUseCase)
        {
            this.timecodeSettingUseCase          = timecodeSettingUseCase;
            this.globalFrameOffsetSettingUseCase = globalFrameOffsetSettingUseCase;

            this.endPointSettingUseCase = endPointSettingUseCase;
            this.sendToEndpointUseCase  = sendToEndpointUseCase;
            this.commandSettingUseCase  = commandSettingUseCase;
            this.onAirSettingUseCase    = onAirSettingUseCase;

            this.obsSettingUseCase       = obsSettingUseCase;
            this.obsCommunucationUseCase = obsCommunucationUseCase;

            this.overlayUseCase = overlayUseCase;

            timecodeDecodeUseCase.OnTimecodeUpdatedAsObservable.Subscribe(OnTimecodeUpdated).AddTo(disposable);

            commandTriggerUseCase.OnCommandTriggeredAsObservable.Subscribe(Send).AddTo(disposable);
        }
        public TimecodeEvaluationController(ITimecodeDecodeUseCase timecodeDecoderRepository,
                                            ITimecodeSettingUseCase timecodeSettingUseCase, IOverlayUseCase overlayUseCase)
        {
            this.timecodeSettingUseCase = timecodeSettingUseCase;

            this.overlayUseCase = overlayUseCase;

            timecodeDecoderRepository.OnTimecodeUpdatedAsObservable.Subscribe(OnTimecodeUpdated).AddTo(disposable);
        }