public TelloVideoViewModel(
     IUIDispatcher dispatcher,
     IUINotifier notifier,
     IVideoObserver videoObserver)
     : base(dispatcher, notifier)
 {
     _videoObserver = videoObserver ?? throw new ArgumentNullException(nameof(videoObserver));
 }
        public MainPage()
        {
            this.InitializeComponent();

            this.dispatcher = new UIDispatcher(SynchronizationContext.Current);
            this.notifier   = new UINotifier();

            this.ViewModel   = this.CreateMainViewModel(this.dispatcher, this.notifier);
            this.DataContext = this.ViewModel;
            this.ViewModel.ControllerViewModel.PropertyChanged += this.ControllerViewModel_PropertyChanged;
        }
        public MainPage()
        {
            InitializeComponent();

            _dispatcher = new UIDispatcher(SynchronizationContext.Current);
            _notifier   = new UINotifier();

            ViewModel   = CreateMainViewModel(_dispatcher, _notifier);
            DataContext = ViewModel;
            ViewModel.ControllerViewModel.PropertyChanged += ControllerViewModel_PropertyChanged;
        }
示例#4
0
 public TelloControllerViewModel(
     IUIDispatcher dispatcher,
     IUINotifier notifier,
     IFlightController controller,
     IRepository repository,
     ISession session)
     : base(dispatcher, notifier)
 {
     this.controller = controller ?? throw new ArgumentNullException(nameof(controller));
     this.repository = repository ?? throw new ArgumentNullException(nameof(repository));
     this.session    = session ?? throw new ArgumentNullException(nameof(session));
 }
示例#5
0
 public TelloStateViewModel(
     IUIDispatcher dispatcher,
     IUINotifier notifier,
     IStateObserver stateObserver,
     IRepository repository,
     ISession session)
     : base(dispatcher, notifier)
 {
     this.stateObserver = stateObserver ?? throw new ArgumentNullException(nameof(stateObserver));
     this.repository    = repository ?? throw new ArgumentNullException(nameof(repository));
     this.session       = session ?? throw new ArgumentNullException(nameof(session));
 }
示例#6
0
        public MainPage()
        {
            this.InitializeComponent();
            // Initialize helper class used to render the skill results on screen
            m_bboxRenderer          = new BoundingBoxRenderer(UIOverlayCanvas);
            m_processedBitmapSource = new SoftwareBitmapSource();

            PopulateCommands();
            ApiContainer.Register <ComputerVisionService>(new ComputerVisionService());
            this.dispatcher = new UIDispatcher(SynchronizationContext.Current);
            this.notifier   = new UINotifier();

            this.ViewModel   = this.CreateMainViewModel(this.dispatcher, this.notifier);
            this.DataContext = this.ViewModel;
            this.ViewModel.ControllerViewModel.PropertyChanged += this.ControllerViewModel_PropertyChanged;

            isListening = false;
        }
示例#7
0
        public MainViewModel(
            IUIDispatcher dispatcher,
            IUINotifier notifier,
            IRepository repository,
            ITransceiver transceiver,
            IReceiver stateReceiver,
            IReceiver videoReceiver)
            : base(dispatcher, notifier)
        {
            this.tello = new DroneMessenger(transceiver, stateReceiver, videoReceiver);

            repository.CreateCatalog <Session>();
            repository.CreateCatalog <ObservationGroup>();
            repository.CreateCatalog <StateObservation>();
            repository.CreateCatalog <AirSpeedObservation>();
            repository.CreateCatalog <AttitudeObservation>();
            repository.CreateCatalog <BatteryObservation>();
            repository.CreateCatalog <HobbsMeterObservation>();
            repository.CreateCatalog <PositionObservation>();
            repository.CreateCatalog <ResponseObservation>();

            var session = repository.NewEntity <Session>();

            this.StateViewModel = new TelloStateViewModel(
                dispatcher,
                notifier,
                this.tello.StateObserver,
                repository,
                session);

            this.VideoViewModel = new TelloVideoViewModel(
                dispatcher,
                notifier,
                this.tello.VideoObserver);

            this.ControllerViewModel = new TelloControllerViewModel(
                dispatcher,
                notifier,
                this.tello.Controller,
                repository,
                session);
        }
        private MainViewModel CreateMainViewModel(IUIDispatcher dispatcher, IUINotifier notifier)
        {
#if EMULATOR_ON
            _simulator = new DroneSimulator();
            var transceiver   = new SimTransceiver(_simulator.MessageHandler);
            var stateReceiver = new SimReceiver(_simulator.StateTransmitter);
            var videoReceiver = new SimReceiver(_simulator.VideoTransmitter);
#else
            var transceiver   = new UdpTransceiver(IPAddress.Parse("192.168.10.1"), 8889);
            var stateReceiver = new UdpReceiver(8890);
            var videoReceiver = new UdpReceiver(11111);
#endif
            return(new MainViewModel(
                       this.dispatcher,
                       this.notifier,
                       new SqliteRepository((null, "tello.sqlite")),
                       transceiver,
                       stateReceiver,
                       videoReceiver));
        }
示例#9
0
 public ViewModel(IUIDispatcher dispatcher, IUINotifier userNotifier)
     : base(dispatcher)
 {
     this.DisplayName  = $"#{this.GetType().Name}#";
     this.UserNotifier = userNotifier ?? throw new ArgumentNullException(nameof(userNotifier));
 }