public BadgerDriverService(BadgerControlSubsystem badgerControlSubsystem)
        {
            shouldSendRelativeArmCommand = false;

            rightJoystickId = 0;
            leftJoystickId = 0;

            initSetup = new Object();
            joystickDisconnected = false;

            this.badgerControlSubsystem = badgerControlSubsystem;

            joystickConfirmedFromVisualView = false;
            joystickConfirmedFromStatusView = false;
            joystickMessageGiven = false;

            _eventAggregator = ApplicationService.Instance.EventAggregator;

            _eventAggregator.GetEvent<ConfirmJoystickEvent>().Subscribe((confirmationID) =>
            {
                if (confirmationID == BadgerControlStatusView.JOYSTICK_ID)
                    joystickConfirmedFromStatusView = true;
                else if (confirmationID == BadgerControlVisualView.JOYSTICK_ID)
                    joystickConfirmedFromVisualView = true;

                if (JoyStickConfirmed && !joystickMessageGiven)
                {
                    _eventAggregator.GetEvent<LoggerEvent>().Publish("Joystick connected.");
                    joystickMessageGiven = true; // jank hack to fix the duplicate event publishing due to multithreading
                }
            });

            relativeLock = new Object();
        }
 public DriveModes(BadgerControlSubsystem badgerControlSubsystem, Component parentComponent, RemoteDriverService remoteDriveService, string serviceName)
 {
     this.badgerControlSubsystem = badgerControlSubsystem;
     this.parentComponent = parentComponent;
     this.remoteDriveService = remoteDriveService;
     this.serviceName = serviceName;
 }
        private BadgerControlSubsystem() : base(GUI_SUBSYSTEM_ID, "BadgerControlSubsystem")
        {
            // setup event listeners
            #region EVENT_LISTENERS
            _eventAggregator = ApplicationService.Instance.EventAggregator;
            _eventAggregator.GetEvent <UpdateIPEvent>().Subscribe((ip) =>
            {
                //CurrentRemoteIP = ip;
            });
            _eventAggregator.GetEvent <UpdateSubsystemIdEvent>().Subscribe((subsystem) =>
            {
                CurrentRemoteSubsystemID = subsystem;
            });
            _eventAggregator.GetEvent <UpdateDriveModeEvent>().Subscribe((drive) =>
            {
                //CurrentDriveComponent = drive;
            });
            #endregion

            localJausAddress = new JausAddress(GUI_SUBSYSTEM_ID, GUI_NODE_ID, GUI_COMPONENT_ID);
            badgerControlSubsystemInstance   = this;
            remoteVelocityStateDriverService = new RemoteVelocityStateDriverService(this);
            remotePrimitiveDriverService     = new RemotePrimitiveDriverService(this);
            discoveredDriveModes             = new Dictionary <long, DriveModes>();
            observableDriveModes             = new ObservableCollection <DriveModes>();
        }
        public BadgerControlService(BadgerControlSubsystem badgerControlSubsystem)
        {
            this.badgerControlSubsystem = badgerControlSubsystem;

            confirmControlMessage = new ConfirmControl();
            rejectControlMessage = new RejectControl();
        }
        public static BadgerControlSubsystem CreateInstance()
        {
            if (badgerControlSubsystemInstance == null)
            {
                badgerControlSubsystemInstance = new BadgerControlSubsystem();
            }

            return(badgerControlSubsystemInstance);
        }
 public BadgerControlDriveViewModel(IEventAggregator eventAggregator)
 {
     this.Confirm = new DelegateCommand<object>(OnConfirm);
     this._eventAggregator = eventAggregator;
     driveMode = DriveModeOption.REMOTE;
     driveModeString = "Remote";
     driveServices = new List<string>();
     badgerControlSubsystem = BadgerControlSubsystem.GetInstance();
     driveModesList = badgerControlSubsystem.ObservableDriveModes;
     driveModesList.CollectionChanged += DriveModesChanged;
 }
        public BadgerControlConnectionViewModel(IEventAggregator eventAggregator)
        {
            this.Abort = new DelegateCommand<object>(OnAbort);
            this.Connect = new DelegateCommand<object>(OnConnect);

            this._eventAggregator = eventAggregator;
            badgerControlSubsystem = BadgerControlSubsystem.GetInstance();
            port = Subsystem.JAUS_PORT;

            ip = "192.168.0.100";
            subsystemID = 10;
        }
 public BadgerRobotsInformationViewModel(IEventAggregator eventAggregator)
 {
     this._eventAggregator = eventAggregator;
     badgerControlSubsystem = BadgerControlSubsystem.GetInstance();
     Refresh = new DelegateCommand<object>(OnRefresh);
     Activate = new DelegateCommand<object>(OnActivate);
     Deactivate = new DelegateCommand<object>(OnDeactivate);
     RequestControl = new DelegateCommand<object>(OnRequestControl);
     ReleaseControl = new DelegateCommand<object>(OnReleaseControl);
     discoveredSubsystems = badgerControlSubsystem.DiscoveredSubsystems;
     discoveredSubsystems.CollectionChanged += DiscoveredSubsystemsUpdated;
     currentNodes = new List<Node>();
 }
 public BadgerControlMapViewModel(IEventAggregator eventAggregator)
 {
     this._eventAggregator = eventAggregator;
     badgerControlSubsystem = BadgerControlSubsystem.GetInstance();
 }
 public RemoteVelocityStateDriverService(BadgerControlSubsystem badgerControlSubsystem)
 {
     this.badgerControlSubsystem = badgerControlSubsystem;
 }
        private BadgerControlSubsystem()
            : base(GUI_SUBSYSTEM_ID, "BadgerControlSubsystem")
        {
            // setup event listeners
            #region EVENT_LISTENERS
            _eventAggregator = ApplicationService.Instance.EventAggregator;
            _eventAggregator.GetEvent<UpdateIPEvent>().Subscribe((ip) =>
            {
                //CurrentRemoteIP = ip;
            });
            _eventAggregator.GetEvent<UpdateSubsystemIdEvent>().Subscribe((subsystem) =>
            {
                CurrentRemoteSubsystemID = subsystem;
            });
            _eventAggregator.GetEvent<UpdateDriveModeEvent>().Subscribe((drive) =>
            {
                //CurrentDriveComponent = drive;
            });
            #endregion

            localJausAddress = new JausAddress(GUI_SUBSYSTEM_ID, GUI_NODE_ID, GUI_COMPONENT_ID);
            badgerControlSubsystemInstance = this;
            remoteVelocityStateDriverService = new RemoteVelocityStateDriverService(this);
            remotePrimitiveDriverService = new RemotePrimitiveDriverService(this);
            discoveredDriveModes = new Dictionary<long, DriveModes>();
            observableDriveModes = new ObservableCollection<DriveModes>();
        }
        public static BadgerControlSubsystem CreateInstance()
        {
            if (badgerControlSubsystemInstance == null)
                badgerControlSubsystemInstance = new BadgerControlSubsystem();

            return badgerControlSubsystemInstance;
        }
 public BadgerControlModule(RegionManager regionManager)
 {
     this.regionManager = regionManager;
     subsystem = BadgerControlSubsystem.CreateInstance();
     subsystem.InitializeComponents();
 }
 public RemotePrimitiveDriverService(BadgerControlSubsystem badgerControlSubsystem)
 {
     this.badgerControlSubsystem = badgerControlSubsystem;
 }