diff --git a/src/cfclient/configs/config.json b/src/cfclient/configs/config.json index bb92591efe544bc86c28072ab1592b17e5516745..82bb36e5109cb5aae7e08f2d55b3f86bef1e296b 100644 --- a/src/cfclient/configs/config.json +++ b/src/cfclient/configs/config.json @@ -14,6 +14,7 @@ "max_rp": 30, "client_side_xmode": false, "auto_reconnect": false, + "keep_alive": false, "device_config_mapping": {}, "enable_debug_driver": false, "input_device_blacklist": "(VirtualBox|VMware)", diff --git a/src/cfclient/ui/main.py b/src/cfclient/ui/main.py index 64f5929a1d72f790e5b395c1463ba119d9028f76..e8ad3370024641a08553f59760e7f69dcc0e322b 100644 --- a/src/cfclient/ui/main.py +++ b/src/cfclient/ui/main.py @@ -244,6 +244,11 @@ class MainUI(QtWidgets.QMainWindow, main_window_class): self._auto_reconnect_changed) self.autoReconnectCheckBox.setChecked(Config().get("auto_reconnect")) + self._keep_alive_enabled = Config().get("keep_alive") + self.keepAliveCheckBox.toggled.connect( + self._keep_alive_changed) + self.keepAliveCheckBox.setChecked(Config().get("keep_alive")) + self._disable_input = False self.joystickReader.input_updated.add_callback( @@ -551,6 +556,19 @@ class MainUI(QtWidgets.QMainWindow, main_window_class): Config().set("auto_reconnect", checked) logger.info("Auto reconnect enabled: {}".format(checked)) + def _keep_alive_changed(self, checked): + self._keep_alive_enabled = checked + Config().set("keep_alive", checked) + logger.info("Keep alive enabled: {}".format(checked)) + + if checked: + cflib.crtp.radiodriver.set_retries_before_disconnect(99999999999999999) # never disconnect :) + cflib.crtp.radiodriver.set_retries(3) + else: + cflib.crtp.radiodriver.set_retries_before_disconnect(1500) # default + cflib.crtp.radiodriver.set_retries(3) + + def _show_connect_dialog(self): self.logConfigDialogue.show() diff --git a/src/cfclient/ui/main.ui b/src/cfclient/ui/main.ui index e2f4e36939ecbf2a82ca384a0c8f8d3b70b2af26..f754129a8a503216319c9b9387a4953b4ed9548a 100644 --- a/src/cfclient/ui/main.ui +++ b/src/cfclient/ui/main.ui @@ -189,7 +189,7 @@ </item> <item> <widget class="QGroupBox" name="groupBox"> - <layout class="QHBoxLayout" stretch="0,0,1"> + <layout class="QHBoxLayout" stretch="0,0,0,1"> <item> <widget class="QLabel" name="addressLabel"> <property name="text"> @@ -220,6 +220,19 @@ </property> </widget> </item> + <item> + <widget class="QCheckBox" name="keepAliveCheckBox"> + <property name="mouseTracking"> + <bool>false</bool> + </property> + <property name="text"> + <string>Keep Alive</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/cfclient/ui/tabs/FlightTab.py b/src/cfclient/ui/tabs/FlightTab.py index 4034fb811d97d4fcdf15a539989b1d373e874770..22157f2091585c921218a292f94ddcc55f1d078c 100644 --- a/src/cfclient/ui/tabs/FlightTab.py +++ b/src/cfclient/ui/tabs/FlightTab.py @@ -579,7 +579,8 @@ class FlightTab(Tab, flight_tab_class): 12: "Gravity", 13: "LED tab", 14: "Color fader", - 15: "Link quality"} + 15: "Link quality", + 16: "Lighthouse quality"} for i in range(nbr + 1): name = "{}: ".format(i) @@ -593,7 +594,7 @@ class FlightTab(Tab, flight_tab_class): self._ring_effect_changed) self._led_ring_effect.setCurrentIndex(current) - if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x01): + if bool(self.helper.cf.param.values["deck"]["bcLedRing"]): self._led_ring_effect.setEnabled(True) self._led_ring_headlight.setEnabled(True) @@ -617,20 +618,20 @@ class FlightTab(Tab, flight_tab_class): heightHoldPossible = False hoverPossible = False - if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x09): + if bool(self.helper.cf.param.values["deck"]["bcZRanger"]): heightHoldPossible = True self.helper.inputDeviceReader.set_hover_max_height(1.0) - if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0E): + if bool(self.helper.cf.param.values["deck"]["bcZRanger2"]): heightHoldPossible = True self.helper.inputDeviceReader.set_hover_max_height(2.0) - if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0A): + if bool(self.helper.cf.param.values["deck"]["bcFlow"]): heightHoldPossible = True hoverPossible = True self.helper.inputDeviceReader.set_hover_max_height(1.0) - if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0F): + if bool(self.helper.cf.param.values["deck"]["bcFlow2"]): heightHoldPossible = True hoverPossible = True self.helper.inputDeviceReader.set_hover_max_height(2.0)