Example #1
0
        /// <summary>
        /// Gets hardware information about the FFB device as reported by DirectInput.
        /// </summary>
        /// <returns>
        /// </returns>
        public DataClasses.HardwareInfo GetHardwareInfo()
        {
            if (ffbDevice == null)
            {
                return(null);
            }

            DataClasses.HardwareInfo dc = new DataClasses.HardwareInfo();

            //Get info about hardware
            dc.axesCount     = ffbDevice.Capabilities.AxesCount;
            dc.buttonCount   = ffbDevice.Capabilities.ButtonCount;
            dc.povCount      = ffbDevice.Capabilities.PovCount;
            dc.driverVersion = ffbDevice.Capabilities.DriverVersion;
            dc.fwVersion     = ffbDevice.Capabilities.FirmwareRevision;
            dc.hwRevision    = ffbDevice.Capabilities.HardwareRevision;
            dc.ffbMinTime    = ffbDevice.Capabilities.ForceFeedbackMinimumTimeResolution;
            dc.ffbSamplePer  = ffbDevice.Capabilities.ForceFeedbackSamplePeriod;

            return(dc);
        }
Example #2
0
        /** Probes the selected FFB device and creates a list
         *  of available FFB effects if successful. Also starts a timer
         *  which periodically reads the status of device's axes and buttons */
        private void cboxDevices_onDeviceSelected(object sender, EventArgs e)
        {
            ComboBox cbox        = (ComboBox)sender;
            int      selectedIdx = cbox.SelectedIndex;

            DInputHandler dih = GetDInputHandlerFromDict(selectedIdx);

            if (dih == null)
            {
                return;
            }

            //Get available effects for the currently selected device
            availableFFBEffects = dih.GetFFBEffects();
            if (availableFFBEffects.Count == 0)
            {
                MessageBox.Show("No force feedback effects available for this device.", FFBInspector.Properties.Resources.errCap_noEffect,
                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
            else
            {
                cboxEffects.Items.Clear();
                foreach (EffectInfo ei in availableFFBEffects)
                {
                    cboxEffects.Items.Add(ei.Name + " (" + ei.Guid.ToString() + ")");
                }

                cboxEffects.SelectedIndex = 0;   //Select first effect in the list
            }

            //Get available force feedback actuators and create respective UI elements
            int actuators = dih.GetFFBActuatorCount();

            if (actuators == 0)
            {
                MessageBox.Show("No force feedback actuators found on this device.",
                                FFBInspector.Properties.Resources.errCap_devError,
                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            /* Create textboxes in Directions groupbox to control
             * direction of the effect on each actuator */
            if (axesControls != null)
            {
                panelAxes.Controls.Clear(); //Remove all existing textboxes
            }
            axesControls = new List <TextBox>();
            for (int i = 0; i < actuators; i++)
            {
                axesControls.Add(new TextBox());
                if (i == 0)
                {
                    axesControls[i].Text = "1";
                }
                else
                {
                    axesControls[i].Text = "0";
                    axesControls[i].Top  = axesControls[i - 1].Top + 25;
                }
                panelAxes.Controls.Add(axesControls[i]);
            }

            DataClasses.HardwareInfo dc = dih.GetHardwareInfo();
            if (dc != null)
            {
                //Display hardware info on the "Info" tab
                axesCount.Text       = dc.axesCount.ToString();
                buttonCount.Text     = dc.buttonCount.ToString();
                povCount.Text        = dc.povCount.ToString();
                driverVersion.Text   = dc.driverVersion.ToString();
                fwVersion.Text       = dc.fwVersion.ToString();
                hwRevision.Text      = dc.hwRevision.ToString();
                ffbMinTime.Text      = dc.ffbMinTime.ToString();
                ffbSamplePeriod.Text = dc.ffbSamplePer.ToString();
            }

            MarkAllSlots(dih);

            //Start the controls status updating timer
            if (updateDeviceStatus == null)
            {
                updateDeviceStatus          = new Timer();
                updateDeviceStatus.Interval = 75;
                updateDeviceStatus.Tick    += new EventHandler(updateDeviceStatus_onTick);
                updateDeviceStatus.Enabled  = true;
            }
        }
Example #3
0
        /// <summary>
        /// Gets hardware information about the FFB device as reported by DirectInput.
        /// </summary>
        /// <returns>
        /// </returns>
        public DataClasses.HardwareInfo GetHardwareInfo()
        {
            if (ffbDevice == null)
                return null;

            DataClasses.HardwareInfo dc = new DataClasses.HardwareInfo();

            //Get info about hardware
            dc.axesCount = ffbDevice.Capabilities.AxesCount;
            dc.buttonCount = ffbDevice.Capabilities.ButtonCount;
            dc.povCount = ffbDevice.Capabilities.PovCount;
            dc.driverVersion = ffbDevice.Capabilities.DriverVersion;
            dc.fwVersion = ffbDevice.Capabilities.FirmwareRevision;
            dc.hwRevision = ffbDevice.Capabilities.HardwareRevision;
            dc.ffbMinTime = ffbDevice.Capabilities.ForceFeedbackMinimumTimeResolution;
            dc.ffbSamplePer = ffbDevice.Capabilities.ForceFeedbackSamplePeriod;

            return dc;
        }