FrogPilot setup - FrogPilot branding
This commit is contained in:
parent
482a9042fc
commit
c0df26af3c
Binary file not shown.
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 108 KiB |
Binary file not shown.
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 69 KiB |
|
@ -20,11 +20,7 @@ EventName = car.CarEvent.EventName
|
|||
|
||||
|
||||
def get_startup_event(car_recognized, controller_available, fw_seen):
|
||||
build_metadata = get_build_metadata()
|
||||
if build_metadata.openpilot.comma_remote and build_metadata.tested_channel:
|
||||
event = EventName.startup
|
||||
else:
|
||||
event = EventName.startupMaster
|
||||
event = EventName.startupMaster
|
||||
|
||||
if not car_recognized:
|
||||
if fw_seen:
|
||||
|
|
|
@ -229,7 +229,7 @@ def startup_master_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubM
|
|||
if "REPLAY" in os.environ:
|
||||
branch = "replay"
|
||||
|
||||
return StartupAlert("WARNING: This branch is not tested", branch, alert_status=AlertStatus.userPrompt)
|
||||
return StartupAlert("Hippity hoppity this is my property", "so I do what I want 🐸", alert_status=AlertStatus.frogpilot)
|
||||
|
||||
def below_engage_speed_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int) -> Alert:
|
||||
return NoEntryAlert(f"Drive above {get_display_speed(CP.minEnableSpeed, metric)} to engage")
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 778 KiB |
Binary file not shown.
After Width: | Height: | Size: 778 KiB |
|
@ -1,4 +1,20 @@
|
|||
import filecmp
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from openpilot.common.basedir import BASEDIR
|
||||
from openpilot.common.params_pyx import Params, UnknownKeyName
|
||||
from openpilot.system.hardware import HARDWARE
|
||||
|
||||
def run_cmd(cmd, success_msg, fail_msg):
|
||||
try:
|
||||
subprocess.check_call(cmd)
|
||||
print(success_msg)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"{fail_msg}: {e}")
|
||||
except Exception as e:
|
||||
print(f"Unexpected error occurred: {e}")
|
||||
|
||||
def convert_params(params, params_storage):
|
||||
def convert_param(key, action_func):
|
||||
|
@ -26,3 +42,32 @@ def convert_params(params, params_storage):
|
|||
|
||||
def frogpilot_boot_functions(params, params_storage):
|
||||
convert_params(params, params_storage)
|
||||
|
||||
def setup_frogpilot():
|
||||
remount_root = ['sudo', 'mount', '-o', 'remount,rw', '/']
|
||||
run_cmd(remount_root, "File system remounted as read-write.", "Failed to remount file system.")
|
||||
|
||||
frogpilot_boot_logo = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/frogpilot_boot_logo.png'
|
||||
frogpilot_boot_logo_jpg = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/frogpilot_boot_logo.jpg'
|
||||
|
||||
boot_logo_location = '/usr/comma/bg.jpg'
|
||||
boot_logo_save_location = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/original_bg.jpg'
|
||||
|
||||
if not os.path.exists(boot_logo_save_location):
|
||||
shutil.copy(boot_logo_location, boot_logo_save_location)
|
||||
print("Successfully saved original_bg.jpg.")
|
||||
|
||||
if filecmp.cmp(boot_logo_save_location, frogpilot_boot_logo_jpg, shallow=False):
|
||||
os.remove(boot_logo_save_location)
|
||||
|
||||
if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False):
|
||||
run_cmd(['sudo', 'cp', frogpilot_boot_logo, boot_logo_location], "Successfully replaced bg.jpg with frogpilot_boot_logo.png.", "Failed to replace boot logo.")
|
||||
|
||||
def uninstall_frogpilot():
|
||||
boot_logo_location = '/usr/comma/bg.jpg'
|
||||
boot_logo_restore_location = f'{BASEDIR}/selfdrive/frogpilot/assets/other_images/original_bg.jpg'
|
||||
|
||||
copy_cmd = ['sudo', 'cp', boot_logo_restore_location, boot_logo_location]
|
||||
run_cmd(copy_cmd, "Successfully restored the original boot logo.", "Failed to restore the original boot logo.")
|
||||
|
||||
HARDWARE.uninstall()
|
||||
|
|
|
@ -152,17 +152,16 @@ void TogglesPanel::updateToggles() {
|
|||
.arg(tr("New Driving Visualization"))
|
||||
.arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner."));
|
||||
|
||||
const bool is_release = params.getBool("IsReleaseBranch");
|
||||
auto cp_bytes = params.get("CarParamsPersistent");
|
||||
if (!cp_bytes.empty()) {
|
||||
AlignedBuffer aligned_buf;
|
||||
capnp::FlatArrayMessageReader cmsg(aligned_buf.align(cp_bytes.data(), cp_bytes.size()));
|
||||
cereal::CarParams::Reader CP = cmsg.getRoot<cereal::CarParams>();
|
||||
|
||||
if (!CP.getExperimentalLongitudinalAvailable() || is_release) {
|
||||
if (!CP.getExperimentalLongitudinalAvailable()) {
|
||||
params.remove("ExperimentalLongitudinalEnabled");
|
||||
}
|
||||
op_long_toggle->setVisible(CP.getExperimentalLongitudinalAvailable() && !is_release);
|
||||
op_long_toggle->setVisible(CP.getExperimentalLongitudinalAvailable());
|
||||
if (hasLongitudinalControl(CP)) {
|
||||
// normal description and toggle
|
||||
experimental_mode_toggle->setEnabled(true);
|
||||
|
@ -179,11 +178,7 @@ void TogglesPanel::updateToggles() {
|
|||
QString long_desc = unavailable + " " + \
|
||||
tr("openpilot longitudinal control may come in a future update.");
|
||||
if (CP.getExperimentalLongitudinalAvailable()) {
|
||||
if (is_release) {
|
||||
long_desc = unavailable + " " + tr("An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches.");
|
||||
} else {
|
||||
long_desc = tr("Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode.");
|
||||
}
|
||||
long_desc = tr("Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode.");
|
||||
}
|
||||
experimental_mode_toggle->setDescription("<b>" + long_desc + "</b><br><br>" + e2e_description);
|
||||
}
|
||||
|
|
|
@ -70,9 +70,7 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) {
|
|||
checkForUpdates();
|
||||
}
|
||||
});
|
||||
if (!params.getBool("IsTestedBranch")) {
|
||||
addItem(targetBranchBtn);
|
||||
}
|
||||
addItem(targetBranchBtn);
|
||||
|
||||
// uninstall button
|
||||
auto uninstallBtn = new ButtonControl(tr("Uninstall %1").arg(getBrand()), tr("UNINSTALL"));
|
||||
|
|
|
@ -29,6 +29,9 @@ protected:
|
|||
{cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)},
|
||||
{cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)},
|
||||
{cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)},
|
||||
|
||||
// FrogPilot alert colors
|
||||
{cereal::ControlsState::AlertStatus::FROGPILOT, QColor(0x17, 0x86, 0x44, 0xf1)},
|
||||
};
|
||||
|
||||
void paintEvent(QPaintEvent*) override;
|
||||
|
|
|
@ -88,7 +88,7 @@ Spinner::Spinner(QWidget *parent) : QWidget(parent) {
|
|||
}
|
||||
QProgressBar::chunk {
|
||||
border-radius: 10px;
|
||||
background-color: white;
|
||||
background-color: rgba(23, 134, 68, 255);
|
||||
}
|
||||
)");
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ QString getVersion() {
|
|||
}
|
||||
|
||||
QString getBrand() {
|
||||
return QObject::tr("openpilot");
|
||||
return QObject::tr("FrogPilot");
|
||||
}
|
||||
|
||||
QString getUserAgent() {
|
||||
|
|
|
@ -75,7 +75,7 @@ void Toggle::setEnabled(bool value) {
|
|||
enabled = value;
|
||||
if (value) {
|
||||
circleColor.setRgb(0xfafafa);
|
||||
green.setRgb(0x33ab4c);
|
||||
green.setRgb(0x178644);
|
||||
} else {
|
||||
circleColor.setRgb(0x888888);
|
||||
green.setRgb(0x227722);
|
||||
|
|
|
@ -19,7 +19,7 @@ from openpilot.system.athena.registration import register, UNREGISTERED_DONGLE_I
|
|||
from openpilot.common.swaglog import cloudlog, add_file_handler
|
||||
from openpilot.system.version import get_build_metadata, terms_version, training_version
|
||||
|
||||
from openpilot.selfdrive.frogpilot.controls.lib.frogpilot_functions import frogpilot_boot_functions
|
||||
from openpilot.selfdrive.frogpilot.controls.lib.frogpilot_functions import frogpilot_boot_functions, setup_frogpilot, uninstall_frogpilot
|
||||
|
||||
|
||||
def manager_init() -> None:
|
||||
|
@ -27,6 +27,8 @@ def manager_init() -> None:
|
|||
|
||||
build_metadata = get_build_metadata()
|
||||
|
||||
setup_frogpilot()
|
||||
|
||||
params = Params()
|
||||
params_storage = Params("/persist/params")
|
||||
params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)
|
||||
|
@ -199,7 +201,7 @@ def main() -> None:
|
|||
params = Params()
|
||||
if params.get_bool("DoUninstall"):
|
||||
cloudlog.warning("uninstalling")
|
||||
HARDWARE.uninstall()
|
||||
uninstall_frogpilot()
|
||||
elif params.get_bool("DoReboot"):
|
||||
cloudlog.warning("reboot")
|
||||
HARDWARE.reboot()
|
||||
|
|
|
@ -307,7 +307,7 @@ class Updater:
|
|||
with open(os.path.join(basedir, "common", "version.h")) as f:
|
||||
version = f.read().split('"')[1]
|
||||
|
||||
commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).rstrip()
|
||||
commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).split()[0]
|
||||
dt = datetime.datetime.fromtimestamp(int(commit_unix_ts))
|
||||
commit_date = dt.strftime("%b %d")
|
||||
except Exception:
|
||||
|
|
|
@ -10,8 +10,8 @@ from openpilot.common.basedir import BASEDIR
|
|||
from openpilot.common.swaglog import cloudlog
|
||||
from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_commit_date
|
||||
|
||||
RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly']
|
||||
TESTED_BRANCHES = RELEASE_BRANCHES + ['devel', 'devel-staging']
|
||||
RELEASE_BRANCHES = ['FrogPilot', 'FrogPilot-New']
|
||||
TESTED_BRANCHES = RELEASE_BRANCHES + ['FrogPilot-Staging', 'FrogPilot-Testing']
|
||||
|
||||
BUILD_METADATA_FILENAME = "build.json"
|
||||
|
||||
|
|
Loading…
Reference in New Issue