private void Poll()
        {
            while (IsMeshing)
            {
                ConfiguredPollData data = config.Poll();
                if (!IsUsingPID)
                {
                    conn.MoveAndAddTrim(data.ThrusterSpeeds);
                }
                else
                {
                    conn.VerticalStabilize(data.ThrusterSpeeds);
                }

                //Servos
                int?openSpeed;
                int?rotateSpeed;
                if ((openSpeed = Utilities.TryGet((int)Servos.ClawOpen, data.ServoSpeeds)) != null)
                {
                    conn.SetServoSpeed(Servos.ClawOpen, (int)openSpeed);
                }

                if ((rotateSpeed = Utilities.TryGet((int)Servos.ClawRotate, data.ServoSpeeds)) != null)
                {
                    conn.SetServoSpeed(Servos.ClawRotate, (int)rotateSpeed);
                }

                //Accessories
                bool?GoGoOn;
                bool?WinderOn;
                bool?LaserOn;
                if ((GoGoOn = Utilities.TryGet((int)Accessories.MicroPropeller, data.Accessories)) != null)
                {
                    conn.DigitalWrite((int)Accessories.MicroPropeller, (bool)GoGoOn);
                }

                if ((WinderOn = Utilities.TryGet((int)Accessories.TetherWinder, data.Accessories)) != null)
                {
                    conn.DigitalWrite((int)Accessories.TetherWinder, (bool)WinderOn);
                }
                if ((LaserOn = Utilities.TryGet((int)Accessories.Laser, data.Accessories)) != null)
                {
                    conn.DigitalWrite((int)Accessories.Laser, (bool)LaserOn);
                }

                Thread.Sleep(PollInterval);
            }
        }