private void Start()
    {
        servo = new RCServo();
        servo.Open();
        servo.Attach += OnAttachServo;

        sensorDistance = new DistanceSensor();
        sensorDistance.Open();
        sensorDistance.Attach += OnAttachDistanceSensor;
    }
    private void CloseConnection()
    {
        if (servo != null)
        {
            servo.Close();
            servo = null;
        }

        if (sensorDistance != null)
        {
            sensorDistance.Close();
            sensorDistance = null;
        }
    }
        public void Servo_Attach(object sender, AttachEventArgs e)
        {
            RCServo servo = (RCServo)sender;

            //servo.Voltage = RCServoVoltage.Volts_5_0;
            //servo.MinPulseWidth = MIN_PULSEWIDTH;
            //servo.MaxPulseWidth = MAX_PULSEWIDTH;
            servo.MinPosition    = POSITION_AT_MIN_PULSEWIDTH;
            servo.MaxPosition    = POSITION_AT_MAX_PULSEWIDTH;
            servo.VelocityLimit  = servo.MaxVelocityLimit;
            servo.Acceleration   = servo.MaxAcceleration;
            servo.TargetPosition = TargetPosition;
            servo.Engaged        = true;

            UpdateConnectionStatus();
        }
        public void SetupPhidget()
        {
            servo         = new RCServo();
            servo.Attach += Servo_Attach;
            servo.Detach += Servo_Detach;
            servo.TargetPositionReached += Servo_TargetPositionReached;
            servo.DeviceSerialNumber     = 306371;
            servo.Channel         = 0;
            servo.IsHubPortDevice = false;
            try
            {
                servo.Open(CONNECTION_TIMEOUT);
            }
            catch (PhidgetException e)
            {
                Debug.WriteLine($"Failed to connect phidget with msg {e}");
            }

            UpdateConnectionStatus();
        }
 public CallBackInfo(RCServo servo, double intendedTargetPosition)
 {
     Owner = servo;
     IntendedTargetPosition = intendedTargetPosition;
 }