diff --git a/common/params.py b/common/params.py index 3c8933b0a..754efff3a 100755 --- a/common/params.py +++ b/common/params.py @@ -122,6 +122,9 @@ keys = { "DragonGreyPandaMode": [TxType.PERSISTENT], "DragonDrivingUI": [TxType.PERSISTENT], "DragonDisplaySteeringLimitAlert": [TxType.PERSISTENT], + "DragonChargingCtrl": [TxType.PERSISTENT], + "DragonCharging": [TxType.PERSISTENT], + "DragonDisCharging": [TxType.PERSISTENT], } diff --git a/selfdrive/dragonpilot/dragonconf/__init__.py b/selfdrive/dragonpilot/dragonconf/__init__.py index 7e442a7bc..e09f7ea5a 100644 --- a/selfdrive/dragonpilot/dragonconf/__init__.py +++ b/selfdrive/dragonpilot/dragonconf/__init__.py @@ -42,6 +42,9 @@ default_conf = { 'DragonGreyPandaMode': '0', 'DragonDrivingUI': '1', 'DragonDisplaySteeringLimitAlert': '1', + 'DragonChargingCtrl': '0', + 'DragonCharging': 70, + 'DragonDisCharging': 60, } deprecated_conf = { diff --git a/selfdrive/thermald.py b/selfdrive/thermald.py index 27e708e2c..6ec659529 100755 --- a/selfdrive/thermald.py +++ b/selfdrive/thermald.py @@ -152,8 +152,13 @@ def thermald_thread(): # Make sure charging is enabled charging_disabled = False os.system('echo "1" > /sys/class/power_supply/battery/charging_enabled') + + # dragonpilot ts_last_ip = 0. ip_addr = '255.255.255.255' + dragon_charging_ctrl = True if params.get('DragonChargingCtrl') == "1" else False + dragon_charging_max = params.get('DragonCharging') + dragon_discharging_min = params.get('DragonDisCharging') while 1: health = messaging.recv_sock(health_sock, wait=True) @@ -297,6 +302,13 @@ def thermald_thread(): location=(location.to_dict() if location else None), thermal=msg.to_dict()) + # we only update charging status once per min + if dragon_charging_ctrl: + if msg.thermal.batteryPercent >= dragon_charging_max: + os.system('echo "0" > /sys/class/power_supply/battery/charging_enabled') + if msg.thermal.batteryPercent <= dragon_discharging_min: + os.system('echo "1" > /sys/class/power_supply/battery/charging_enabled') + count += 1