diff --git a/src/cfclient/ui/tabs/FlightTab.py b/src/cfclient/ui/tabs/FlightTab.py index 9dc06b8a90a167e1f7ea8437da4ca2c2e91ccba6..492a815d0a44945aa814d0df32f9ea64f40afab6 100644 --- a/src/cfclient/ui/tabs/FlightTab.py +++ b/src/cfclient/ui/tabs/FlightTab.py @@ -619,10 +619,21 @@ class FlightTab(Tab, flight_tab_class): if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x09): heightHoldPossible = True + self.helper.inputDeviceReader.set_hover_max_height(1.0) + + if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0E): + heightHoldPossible = True + self.helper.inputDeviceReader.set_hover_max_height(2.0) if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0A): heightHoldPossible = True hoverPossible = True + self.helper.inputDeviceReader.set_hover_max_height(1.0) + + if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0F): + heightHoldPossible = True + hoverPossible = True + self.helper.inputDeviceReader.set_hover_max_height(2.0) if not heightHoldPossible: self._assist_mode_combo.model().item(2).setEnabled(False) diff --git a/src/cfclient/utils/input/__init__.py b/src/cfclient/utils/input/__init__.py index 20e6a15c896368d28b97beb1701c9f153713d5cd..ec3d3299db36e1802e1cb311bbd18ed94b8baf16 100644 --- a/src/cfclient/utils/input/__init__.py +++ b/src/cfclient/utils/input/__init__.py @@ -97,6 +97,7 @@ class JoystickReader(object): self.thrust_slew_enabled = False self.thrust_slew_limit = 0 self.has_pressure_sensor = False + self._hover_max_height = MAX_TARGET_HEIGHT self.max_rp_angle = 0 self.max_yaw_rate = 0 @@ -187,6 +188,9 @@ class JoystickReader(object): return d return None + def set_hover_max_height(self, height): + self._hover_max_height = height + def set_alt_hold_available(self, available): """Set if altitude hold is available or not (depending on HW)""" self.has_pressure_sensor = available @@ -458,8 +462,8 @@ class JoystickReader(object): # Integrate velosity setpoint self._target_height += vz * INPUT_READ_PERIOD # Cap target height - if self._target_height > MAX_TARGET_HEIGHT: - self._target_height = MAX_TARGET_HEIGHT + if self._target_height > self._hover_max_height: + self._target_height = self._hover_max_height if self._target_height < MIN_HOVER_HEIGHT: self._target_height = MIN_HOVER_HEIGHT @@ -495,8 +499,8 @@ class JoystickReader(object): # Integrate velosity setpoint self._target_height += vz * INPUT_READ_PERIOD # Cap target height - if self._target_height > MAX_TARGET_HEIGHT: - self._target_height = MAX_TARGET_HEIGHT + if self._target_height > self._hover_max_height: + self._target_height = self._hover_max_height if self._target_height < MIN_TARGET_HEIGHT: self._target_height = MIN_TARGET_HEIGHT self.heighthold_input_updated.call(roll, -pitch,