Beispiel #1
0
def manager_init():

    # update system time from panda
    set_time(cloudlog)

    params = Params()
    params.manager_start()

    default_params = [
        ("CompletedTrainingVersion", "0"),
        ("HasAcceptedTerms", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
    ]

    if params.get_bool("RecordFrontLock"):
        params.put_bool("RecordFront", True)

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this dashcam?
    if os.getenv("PASSIVE") is not None:
        params.put_bool("Passive", bool(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    os.umask(0)  # Make sure we can create files with 777 permissions

    # Create folders needed for msgq
    try:
        os.mkdir("/dev/shm")
    except FileExistsError:
        pass
    except PermissionError:
        print("WARNING: failed to make /dev/shm")

    # set dongle id
    reg_res = register(show_spinner=True)
    if reg_res:
        dongle_id = reg_res
    else:
        raise Exception("server registration failed")
    os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog and loggerd

    if not dirty:
        os.environ['CLEAN'] = '1'

    cloudlog.bind_global(dongle_id=dongle_id,
                         version=version,
                         dirty=dirty,
                         device=HARDWARE.get_device_type())
    crash.bind_user(id=dongle_id)
    crash.bind_extra(version=version,
                     dirty=dirty,
                     device=HARDWARE.get_device_type())
Beispiel #2
0
class TestParams(unittest.TestCase):
    def setUp(self):
        self.tmpdir = tempfile.mkdtemp()
        print("using", self.tmpdir)
        self.params = Params(self.tmpdir)

    def tearDown(self):
        shutil.rmtree(self.tmpdir)

    def test_params_put_and_get(self):
        self.params.put("DongleId", "cb38263377b873ee")
        assert self.params.get("DongleId") == b"cb38263377b873ee"

    def test_params_non_ascii(self):
        st = b"\xe1\x90\xff"
        self.params.put("CarParams", st)
        assert self.params.get("CarParams") == st

    def test_params_get_cleared_panda_disconnect(self):
        self.params.put("CarParams", "test")
        self.params.put("DongleId", "cb38263377b873ee")
        assert self.params.get("CarParams") == b"test"
        self.params.panda_disconnect()
        assert self.params.get("CarParams") is None
        assert self.params.get("DongleId") is not None

    def test_params_get_cleared_manager_start(self):
        self.params.put("CarParams", "test")
        self.params.put("DongleId", "cb38263377b873ee")
        assert self.params.get("CarParams") == b"test"
        self.params.manager_start()
        assert self.params.get("CarParams") is None
        assert self.params.get("DongleId") is not None

    def test_params_two_things(self):
        self.params.put("DongleId", "bob")
        self.params.put("AthenadPid", "123")
        assert self.params.get("DongleId") == b"bob"
        assert self.params.get("AthenadPid") == b"123"

    def test_params_get_block(self):
        def _delayed_writer():
            time.sleep(0.1)
            self.params.put("CarParams", "test")

        threading.Thread(target=_delayed_writer).start()
        assert self.params.get("CarParams") is None
        assert self.params.get("CarParams", True) == b"test"

    def test_params_unknown_key_fails(self):
        with self.assertRaises(UnknownKeyName):
            self.params.get("swag")

    def test_params_permissions(self):
        permissions = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH

        self.params.put("DongleId", "cb38263377b873ee")
        st_mode = os.stat(f"{self.tmpdir}/d/DongleId").st_mode
        assert (st_mode & permissions) == permissions
Beispiel #3
0
def main():
  params = Params()
  params.manager_start()

  default_params = [
    ("CommunityFeaturesToggle", "0"),
    ("CompletedTrainingVersion", "0"),
    ("IsRHD", "0"),
    ("IsMetric", "0"),
    ("RecordFront", "0"),
    ("HasAcceptedTerms", "0"),
    ("HasCompletedSetup", "0"),
    ("IsUploadRawEnabled", "1"),
    ("IsLdwEnabled", "1"),
    ("LastUpdateTime", datetime.datetime.utcnow().isoformat().encode('utf8')),
    ("OpenpilotEnabledToggle", "1"),
    ("VisionRadarToggle", "0"),
    ("LaneChangeEnabled", "1"),
    ("LongControlEnabled", "0"),
    ("MadModeEnabled", "0"),
    ("AutoLaneChangeEnabled", "0"),
    ("IsDriverViewEnabled", "0"),
  ]

  # set unset params
  for k, v in default_params:
    if params.get(k) is None:
      params.put(k, v)

  # is this dashcam?
  if os.getenv("PASSIVE") is not None:
    params.put("Passive", str(int(os.getenv("PASSIVE"))))

  if params.get("Passive") is None:
    raise Exception("Passive must be set to continue")

  if EON:
    update_apks()
  manager_init()
  manager_prepare()
  spinner.close()

  if os.getenv("PREPAREONLY") is not None:
    return

  # SystemExit on sigterm
  signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

  try:
    manager_thread()
  except Exception:
    traceback.print_exc()
    crash.capture_exception()
  finally:
    cleanup_all_processes(None, None)

  if params.get("DoUninstall", encoding='utf8') == "1":
    cloudlog.warning("uninstalling")
    HARDWARE.uninstall()
class TestParams(unittest.TestCase):
    def setUp(self):
        self.tmpdir = tempfile.mkdtemp()
        print("using", self.tmpdir)
        self.params = Params(self.tmpdir)

    def tearDown(self):
        shutil.rmtree(self.tmpdir)

    def test_params_put_and_get(self):
        self.params.put("DongleId", "cb38263377b873ee")
        assert self.params.get("DongleId") == b"cb38263377b873ee"

    def test_params_non_ascii(self):
        st = b"\xe1\x90\xff"
        self.params.put("CarParams", st)
        assert self.params.get("CarParams") == st

    def test_params_get_cleared_panda_disconnect(self):
        self.params.put("CarParams", "test")
        self.params.put("DongleId", "cb38263377b873ee")
        assert self.params.get("CarParams") == b"test"
        self.params.panda_disconnect()
        assert self.params.get("CarParams") is None
        assert self.params.get("DongleId") is not None

    def test_params_get_cleared_manager_start(self):
        self.params.put("CarParams", "test")
        self.params.put("DongleId", "cb38263377b873ee")
        assert self.params.get("CarParams") == b"test"
        self.params.manager_start()
        assert self.params.get("CarParams") is None
        assert self.params.get("DongleId") is not None

    def test_params_two_things(self):
        self.params.put("DongleId", "bob")
        self.params.put("AccessToken", "knope")
        assert self.params.get("DongleId") == b"bob"
        assert self.params.get("AccessToken") == b"knope"

    def test_params_get_block(self):
        def _delayed_writer():
            time.sleep(0.1)
            self.params.put("CarParams", "test")

        threading.Thread(target=_delayed_writer).start()
        assert self.params.get("CarParams") is None
        assert self.params.get("CarParams", True) == b"test"

    def test_params_unknown_key_fails(self):
        with self.assertRaises(UnknownKeyName):
            self.params.get("swag")
def main():
    if os.getenv("NOLOG") is not None:
        del managed_processes['loggerd']
        del managed_processes['tombstoned']
    if os.getenv("NOUPLOAD") is not None:
        del managed_processes['uploader']
    if os.getenv("NOVISION") is not None:
        del managed_processes['visiond']
    if os.getenv("NOBOARD") is not None:
        del managed_processes['boardd']
    if os.getenv("LEAN") is not None:
        del managed_processes['uploader']
        del managed_processes['loggerd']
        del managed_processes['logmessaged']
        del managed_processes['logcatd']
        del managed_processes['tombstoned']
        del managed_processes['proclogd']
    if os.getenv("NOCONTROL") is not None:
        del managed_processes['controlsd']
        del managed_processes['radard']

    # support additional internal only extensions
    try:
        import selfdrive.manager_extensions
        selfdrive.manager_extensions.register(register_managed_process)
    except ImportError:
        pass

    params = Params()
    params.manager_start()

    # set unset params
    if params.get("IsMetric") is None:
        params.put("IsMetric", "0")
    if params.get("IsRearViewMirror") is None:
        params.put("IsRearViewMirror", "1")

    manager_init()
    manager_prepare()

    if os.getenv("PREPAREONLY") is not None:
        sys.exit(0)

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)
Beispiel #6
0
def replay_process(cfg, lr):
    gc.disable()  # gc can occasionally cause canparser to timeout

    pub_socks, sub_socks = {}, {}
    for pub, sub in cfg.pub_sub.iteritems():
        pub_socks[pub] = messaging.pub_sock(service_list[pub].port)

        for s in sub:
            sub_socks[s] = messaging.sub_sock(service_list[s].port)

    all_msgs = sorted(lr, key=lambda msg: msg.logMonoTime)
    pub_msgs = filter(lambda msg: msg.which() in pub_socks.keys(), all_msgs)

    params = Params()
    params.manager_start()
    params.put("Passive", "0")

    manager.gctx = {}
    manager.prepare_managed_process(cfg.proc_name)
    manager.start_managed_process(cfg.proc_name)
    time.sleep(3)  # Wait for started process to be ready

    if cfg.init_callback is not None:
        cfg.init_callback(all_msgs, pub_socks, sub_socks)

    CP = car.CarParams.from_bytes(params.get("CarParams", block=True))

    log_msgs = []
    for msg in tqdm(pub_msgs):
        if cfg.should_recv_callback is not None:
            recv_socks = cfg.should_recv_callback(msg, CP)
        else:
            recv_socks = cfg.pub_sub[msg.which()]

        pub_socks[msg.which()].send(msg.as_builder().to_bytes())

        if len(recv_socks):
            # TODO: add timeout
            for sock in recv_socks:
                m = messaging.recv_one(sub_socks[sock])

                # make these values fixed for faster comparison
                m_builder = m.as_builder()
                m_builder.logMonoTime = 0
                m_builder.valid = True
                log_msgs.append(m_builder.as_reader())

    gc.enable()
    manager.kill_managed_process(cfg.proc_name)
    return log_msgs
def main():
  params = Params()
  params.manager_start()

  default_params = [
    ("CommunityFeaturesToggle", "0"),
    ("CompletedTrainingVersion", "0"),
    ("IsRHD", "0"),
    ("IsMetric", "0"),
    ("RecordFront", "0"),
    ("HasAcceptedTerms", "0"),
    ("HasCompletedSetup", "0"),
    ("IsUploadRawEnabled", "1"),
    ("IsLdwEnabled", "1"),
    ("LastUpdateTime", datetime.datetime.utcnow().isoformat().encode('utf8')),
    ("OpenpilotEnabledToggle", "1"),
    ("LaneChangeEnabled", "1"),
    ("IsDriverViewEnabled", "0"),
  ]

  # set unset params
  for k, v in default_params:
    if params.get(k) is None:
      params.put(k, v)

  # is this dashcam?
  if os.getenv("PASSIVE") is not None:
    params.put("Passive", str(int(os.getenv("PASSIVE"))))

  if params.get("Passive") is None:
    raise Exception("Passive must be set to continue")

  init_params_vals(params)
  if EON:
    update_apks()
  manager_init(params.get('dp_reg') == b'1')
  manager_prepare()
  spinner.close()

  if os.getenv("PREPAREONLY") is not None:
    return

  # dp
  del managed_processes['tombstoned']
  steering_monitor = params.get("dp_steering_monitor") == b'1'
  if not steering_monitor and params.get("dp_driver_monitor") == b'0':
    del managed_processes['loggerd']
    del managed_processes['logmessaged']
    del managed_processes['proclogd']
    del managed_processes['logcatd']
    del managed_processes['dmonitoringd']
    del managed_processes['dmonitoringmodeld']
  elif params.get("dp_logger") == b'0' or \
          params.get("dp_atl") == b'1' or \
          not steering_monitor:
    del managed_processes['loggerd']
    del managed_processes['logmessaged']
    del managed_processes['proclogd']
    del managed_processes['logcatd']
  if params.get("dp_uploader") == b'0':
    del managed_processes['uploader']
  if params.get("dp_updated") == b'0':
    del managed_processes['updated']
  if params.get('dp_gpxd') == b'0':
    del managed_processes['gpxd']

  # SystemExit on sigterm
  signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

  try:
    manager_thread()
  except Exception:
    traceback.print_exc()
    crash.capture_exception()
  finally:
    cleanup_all_processes(None, None)

  if params.get("DoUninstall", encoding='utf8') == "1":
    cloudlog.warning("uninstalling")
    HARDWARE.uninstall()
Beispiel #8
0
def main():
    if ANDROID:
        # the flippening!
        os.system(
            'LD_LIBRARY_PATH="" content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1'
        )

        # disable bluetooth
        os.system('service call bluetooth_manager 8')

    params = Params()
    params.manager_start()

    default_params = [
        ("CommunityFeaturesToggle", "0"),
        ("CompletedTrainingVersion", "0"),
        ("IsRHD", "0"),
        ("IsMetric", "1"),
        ("RecordFront", "0"),
        ("HasAcceptedTerms", "0"),
        ("HasCompletedSetup", "0"),
        ("IsUploadRawEnabled", "1"),
        ("IsLdwEnabled", "1"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("LaneChangeEnabled", "1"),
        ("IsDriverViewEnabled", "0"),
        ("IsOpenpilotViewEnabled", "0"),
        ("OpkrAutoShutdown", "3"),
        ("OpkrAutoScreenOff", "0"),
        ("OpkrUIBrightness", "0"),
        ("OpkrEnableDriverMonitoring", "1"),
        ("OpkrEnableLogger", "0"),
        ("OpkrEnableGetoffAlert", "1"),
        ("OpkrAutoResume", "1"),
        ("OpkrVariableCruise", "0"),
        ("OpkrLaneChangeSpeed", "60"),
        ("OpkrAutoLaneChangeDelay", "0"),
        ("OpkrSteerAngleCorrection", "0"),
        ("PutPrebuiltOn", "0"),
        ("FingerprintIssuedFix", "0"),
        ("LdwsCarFix", "0"),
        ("LateralControlMethod", "0"),
        ("CruiseStatemodeSelInit", "1"),
        ("InnerLoopGain", "30"),
        ("OuterLoopGain", "20"),
        ("TimeConstant", "10"),
        ("ActuatorEffectiveness", "15"),
        ("Scale", "1750"),
        ("LqrKi", "10"),
        ("DcGain", "30"),
        ("IgnoreZone", "0"),
        ("PidKp", "20"),
        ("PidKi", "40"),
        ("PidKf", "5"),
        ("CameraOffsetAdj", "60"),
        ("SteerRatioAdj", "135"),
        ("SteerActuatorDelayAdj", "35"),
        ("SteerRateCostAdj", "50"),
        ("SteerLimitTimerAdj", "80"),
        ("TireStiffnessFactorAdj", "75"),
        ("SteerMaxAdj", "380"),
        ("SteerMaxBaseAdj", "255"),
        ("SteerDeltaUpAdj", "3"),
        ("SteerDeltaDownAdj", "7"),
        ("SteerMaxvAdj", "10"),
        ("OpkrBatteryChargingControl", "1"),
        ("OpkrBatteryChargingMin", "70"),
        ("OpkrBatteryChargingMax", "80"),
        ("OpkrUiOpen", "0"),
        ("OpkrDriveOpen", "0"),
        ("OpkrTuneOpen", "0"),
        ("OpkrControlOpen", "0"),
        ("LeftCurvOffsetAdj", "0"),
        ("RightCurvOffsetAdj", "0"),
        ("DebugUi1", "0"),
        ("DebugUi2", "0"),
        ("OpkrBlindSpotDetect", "0"),
        ("OpkrMaxAngleLimit", "90"),
        ("OpkrAutoResumeOption", "0"),
        ("OpkrAngleOffsetSelect", "0"),
    ]

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this chffrplus?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    if ANDROID:
        update_apks()
    manager_init()
    manager_prepare(spinner)
    spinner.close()

    if os.getenv("PREPAREONLY") is not None:
        return

    # SystemExit on sigterm
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)

    if params.get("DoUninstall", encoding='utf8') == "1":
        uninstall()
Beispiel #9
0
def manager_init():
  params = Params()
  params.manager_start()

  default_params = [
    ("CommunityFeaturesToggle", "0"),
    ("EndToEndToggle", "0"),
    ("CompletedTrainingVersion", "0"),
    ("IsRHD", "0"),
    ("IsMetric", "1"),
    ("RecordFront", "0"),
    ("HasAcceptedTerms", "0"),
    ("HasCompletedSetup", "0"),
    ("IsUploadRawEnabled", "1"),
    ("IsLdwEnabled", "0"),
    ("LastUpdateTime", datetime.datetime.utcnow().isoformat().encode('utf8')),
    ("OpenpilotEnabledToggle", "1"),
    ("VisionRadarToggle", "0"),
    ("IsDriverViewEnabled", "0"),
    ("IsOpenpilotViewEnabled", "0"),
    ("OpkrAutoShutdown", "2"),
    ("OpkrAutoScreenDimming", "0"),
    ("OpkrUIBrightness", "0"),
    ("OpkrUIBrightness", "0"),
    ("OpkrUIVolumeBoost", "0"),
    ("OpkrEnableDriverMonitoring", "1"),
    ("OpkrEnableLogger", "0"),
    ("OpkrEnableGetoffAlert", "1"),
    ("OpkrAutoResume", "1"),
    ("OpkrVariableCruise", "1"),
    ("OpkrLaneChangeSpeed", "45"),
    ("OpkrAutoLaneChangeDelay", "0"),
    ("OpkrSteerAngleCorrection", "0"),
    ("PutPrebuiltOn", "0"),
    ("FingerprintIssuedFix", "0"),
    ("LdwsCarFix", "0"),
    ("LateralControlMethod", "0"),
    ("CruiseStatemodeSelInit", "1"),
    ("InnerLoopGain", "35"),
    ("OuterLoopGain", "20"),
    ("TimeConstant", "14"),
    ("ActuatorEffectiveness", "20"),
    ("Scale", "1750"),
    ("LqrKi", "10"),
    ("DcGain", "30"),
    ("IgnoreZone", "1"),
    ("PidKp", "20"),
    ("PidKi", "40"),
    ("PidKd", "150"),
    ("PidKf", "5"),
    ("CameraOffsetAdj", "60"),
    ("SteerRatioAdj", "150"),
    ("SteerRatioMaxAdj", "180"),
    ("SteerActuatorDelayAdj", "0"),
    ("SteerRateCostAdj", "45"),
    ("SteerLimitTimerAdj", "40"),
    ("TireStiffnessFactorAdj", "85"),
    ("SteerMaxBaseAdj", "300"),
    ("SteerMaxAdj", "384"),
    ("SteerDeltaUpBaseAdj", "3"),
    ("SteerDeltaUpAdj", "3"),
    ("SteerDeltaDownBaseAdj", "7"),
    ("SteerDeltaDownAdj", "7"),
    ("SteerMaxvAdj", "10"),
    ("OpkrBatteryChargingControl", "1"),
    ("OpkrBatteryChargingMin", "70"),
    ("OpkrBatteryChargingMax", "80"),
    ("LeftCurvOffsetAdj", "0"),
    ("RightCurvOffsetAdj", "0"),
    ("DebugUi1", "0"),
    ("DebugUi2", "0"),
    ("OpkrBlindSpotDetect", "1"),
    ("OpkrMaxAngleLimit", "90"),
    ("OpkrSpeedLimitOffset", "0"),
    ("LimitSetSpeedCamera", "0"),
    ("LimitSetSpeedCameraDist", "0"),
    ("OpkrLiveSteerRatio", "1"),
    ("OpkrVariableSteerMax", "1"),
    ("OpkrVariableSteerDelta", "0"),
    ("FingerprintTwoSet", "1"),
    ("OpkrVariableCruiseProfile", "0"),
    ("OpkrLiveTune", "0"),
    ("OpkrDrivingRecord", "0"),
    ("OpkrTurnSteeringDisable", "0"),
    ("CarModel", ""),
    ("OpkrHotspotOnBoot", "0"),
    ("OpkrSSHLegacy", "1"),
    ("ShaneFeedForward", "0"),
    ("CruiseOverMaxSpeed", "0"),
    ("OpkrMapDecelOnly", "0"),
    ("JustDoGearD", "0"),
    ("LanelessMode", "0"),
    ("ComIssueGone", "0"),
    ("MaxSteer", "384"),
    ("MaxRTDelta", "112"),
    ("MaxRateUp", "3"),
    ("MaxRateDown", "7"),
    ("SteerThreshold", "150"),
  ]

  if params.get("RecordFrontLock", encoding='utf-8') == "1":
    params.put("RecordFront", "1")

  # set unset params
  for k, v in default_params:
    if params.get(k) is None:
      params.put(k, v)

  # is this dashcam?
  if os.getenv("PASSIVE") is not None:
    params.put("Passive", str(int(os.getenv("PASSIVE"))))

  if params.get("Passive") is None:
    raise Exception("Passive must be set to continue")

  if EON:
    update_apks()

  os.umask(0)  # Make sure we can create files with 777 permissions

  # Create folders needed for msgq
  try:
    os.mkdir("/dev/shm")
  except FileExistsError:
    pass
  except PermissionError:
    print("WARNING: failed to make /dev/shm")

  # set dongle id
  reg_res = register(show_spinner=True)
  if reg_res:
    dongle_id = reg_res
  else:
    raise Exception("server registration failed")
  os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog and loggerd

  if not dirty:
    os.environ['CLEAN'] = '1'

  cloudlog.bind_global(dongle_id=dongle_id, version=version, dirty=dirty,
                       device=HARDWARE.get_device_type())
  crash.bind_user(id=dongle_id)
  crash.bind_extra(version=version, dirty=dirty, device=HARDWARE.get_device_type())

  # ensure shared libraries are readable by apks
  if EON:
    os.chmod(BASEDIR, 0o755)
    os.chmod("/dev/shm", 0o777)
    os.chmod(os.path.join(BASEDIR, "cereal"), 0o755)
    os.chmod(os.path.join(BASEDIR, "cereal", "libmessaging_shared.so"), 0o755)
Beispiel #10
0
def manager_init():

    # update system time from panda
    set_time(cloudlog)

    params = Params()
    params.manager_start()

    default_params = [
        ("CompletedTrainingVersion", "0"),
        ("HasAcceptedTerms", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
    ]

    if TICI:
        default_params.append(("IsUploadRawEnabled", "1"))

    if params.get_bool("RecordFrontLock"):
        params.put_bool("RecordFront", True)

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this dashcam?
    if os.getenv("PASSIVE") is not None:
        params.put_bool("Passive", bool(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    os.umask(0)  # Make sure we can create files with 777 permissions

    # Create folders needed for msgq
    try:
        os.mkdir("/dev/shm")
    except FileExistsError:
        pass
    except PermissionError:
        print("WARNING: failed to make /dev/shm")

    # set version params
    params.put("Version", version)
    params.put("TermsVersion", terms_version)
    params.put("TrainingVersion", training_version)
    params.put("GitCommit", get_git_commit(default=""))
    params.put("GitBranch", get_git_branch(default=""))
    params.put("GitRemote", get_git_remote(default=""))

    # set dongle id
    dongle_id = register(show_spinner=True)
    if dongle_id is not None:
        os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog

    if not dirty:
        os.environ['CLEAN'] = '1'

    cloudlog.bind_global(dongle_id=dongle_id,
                         version=version,
                         dirty=dirty,
                         device=HARDWARE.get_device_type())

    if not (dongle_id is None or os.getenv("NOLOG") or os.getenv("NOCRASH")
            or PC):
        crash.init()
    crash.bind_user(id=dongle_id)
    crash.bind_extra(dirty=dirty,
                     origin=origin,
                     branch=branch,
                     commit=commit,
                     device=HARDWARE.get_device_type())
Beispiel #11
0
def main():
    os.environ['PARAMS_PATH'] = PARAMS

    # the flippening!
    os.system(
        'LD_LIBRARY_PATH="" content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1'
    )

    # disable bluetooth
    os.system('service call bluetooth_manager 8')

    params = Params()
    params.manager_start()

    default_params = [
        ("CommunityFeaturesToggle", "0"),
        ("CompletedTrainingVersion", "0"),
        ("IsRHD", "0"),
        ("IsMetric", "0"),
        ("RecordFront", "0"),
        ("HasAcceptedTerms", "0"),
        ("HasCompletedSetup", "0"),
        ("IsUploadRawEnabled", "1"),
        ("IsLdwEnabled", "1"),
        ("IsGeofenceEnabled", "-1"),
        ("SpeedLimitOffset", "0"),
        ("LongitudinalControl", "0"),
        ("LimitSetSpeed", "0"),
        ("LimitSetSpeedNeural", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("LaneChangeEnabled", "1"),
        ("IsDriverViewEnabled", "0"),
    ]

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this chffrplus?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    if ANDROID:
        update_apks()
    manager_init()
    manager_prepare(spinner)
    spinner.close()

    if os.getenv("PREPAREONLY") is not None:
        return

    # SystemExit on sigterm
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

    try:
        manager_thread()
    except SystemExit:
        raise
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)

    if params.get("DoUninstall", encoding='utf8') == "1":
        uninstall()
Beispiel #12
0
def manager_init():
    params = Params()
    params.manager_start()

    default_params = [
        ("CommunityFeaturesToggle", "0"),
        ("EndToEndToggle", "0"),
        ("CompletedTrainingVersion", "0"),
        ("IsRHD", "0"),
        ("IsMetric", "0"),
        ("RecordFront", "0"),
        ("HasAcceptedTerms", "0"),
        ("HasCompletedSetup", "0"),
        ("IsUploadRawEnabled", "1"),
        ("IsLdwEnabled", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("LongControlEnabled", "0"),
        ("VisionRadarToggle", "0"),
        ("RadarDisableEnabled", "0"),
        ("MdpsHarnessEnabled", "0"),
        ("SccEnabled", "1"),
        ("EnableOPwithCC", "1"),
        ("SccHarnessPresent", "0"),
        ("IsDriverViewEnabled", "0"),
        ("LkasFullRangeAvailable", "1"),
        ("ChryslerMangoMode", "1"),
    ]

    if params.get("RecordFrontLock", encoding='utf-8') == "1":
        params.put("RecordFront", "1")

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this dashcam?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    os.umask(0)  # Make sure we can create files with 777 permissions

    # Create folders needed for msgq
    try:
        os.mkdir("/dev/shm")
    except FileExistsError:
        pass
    except PermissionError:
        print("WARNING: failed to make /dev/shm")

    # set dongle id
    reg_res = register(show_spinner=True)
    if reg_res:
        dongle_id = reg_res
    else:
        raise Exception("server registration failed")
    os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog and loggerd

    if not dirty:
        os.environ['CLEAN'] = '1'

    cloudlog.bind_global(dongle_id=dongle_id,
                         version=version,
                         dirty=dirty,
                         device=HARDWARE.get_device_type())
    crash.bind_user(id=dongle_id)
    crash.bind_extra(version=version,
                     dirty=dirty,
                     device=HARDWARE.get_device_type())
Beispiel #13
0
def manager_init(spinner=None):
    params = Params()
    params.manager_start()

    default_params = [
        ("CommunityFeaturesToggle", "0"),
        ("CompletedTrainingVersion", "0"),
        ("IsRHD", "0"),
        ("IsMetric", "0"),
        ("RecordFront", "0"),
        ("HasAcceptedTerms", "0"),
        ("HasCompletedSetup", "0"),
        ("IsUploadRawEnabled", "1"),
        ("IsLdwEnabled", "1"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("VisionRadarToggle", "0"),
        ("LaneChangeEnabled", "1"),
        ("IsDriverViewEnabled", "0"),
    ]

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this dashcam?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    if EON:
        update_apks()

    os.umask(0)  # Make sure we can create files with 777 permissions

    # Create folders needed for msgq
    try:
        os.mkdir("/dev/shm")
    except FileExistsError:
        pass
    except PermissionError:
        print("WARNING: failed to make /dev/shm")

    # set dongle id
    reg_res = register(spinner)
    if reg_res:
        dongle_id = reg_res
    else:
        raise Exception("server registration failed")
    os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog and loggerd

    if not dirty:
        os.environ['CLEAN'] = '1'

    cloudlog.bind_global(dongle_id=dongle_id,
                         version=version,
                         dirty=dirty,
                         device=HARDWARE.get_device_type())
    crash.bind_user(id=dongle_id)
    crash.bind_extra(version=version,
                     dirty=dirty,
                     device=HARDWARE.get_device_type())

    # ensure shared libraries are readable by apks
    if EON:
        os.chmod(BASEDIR, 0o755)
        os.chmod("/dev/shm", 0o777)
        os.chmod(os.path.join(BASEDIR, "cereal"), 0o755)
        os.chmod(os.path.join(BASEDIR, "cereal", "libmessaging_shared.so"),
                 0o755)
Beispiel #14
0
def main():
    # the flippening!
    os.system(
        'LD_LIBRARY_PATH="" content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1'
    )

    if os.getenv("NOLOG") is not None:
        del managed_processes['loggerd']
        del managed_processes['tombstoned']
    if os.getenv("NOUPLOAD") is not None:
        del managed_processes['uploader']
    if os.getenv("NOVISION") is not None:
        del managed_processes['visiond']
    if os.getenv("LEAN") is not None:
        del managed_processes['uploader']
        del managed_processes['loggerd']
        del managed_processes['logmessaged']
        del managed_processes['logcatd']
        del managed_processes['tombstoned']
        del managed_processes['proclogd']
    if os.getenv("NOCONTROL") is not None:
        del managed_processes['controlsd']
        del managed_processes['radard']

    # support additional internal only extensions
    try:
        import selfdrive.manager_extensions
        selfdrive.manager_extensions.register(register_managed_process)
    except ImportError:
        pass

    params = Params()
    params.manager_start()

    # set unset params
    if params.get("IsMetric") is None:
        params.put("IsMetric", "0")
    if params.get("RecordFront") is None:
        params.put("RecordFront", "0")
    if params.get("IsFcwEnabled") is None:
        params.put("IsFcwEnabled", "1")
    if params.get("HasAcceptedTerms") is None:
        params.put("HasAcceptedTerms", "0")
    if params.get("IsUploadVideoOverCellularEnabled") is None:
        params.put("IsUploadVideoOverCellularEnabled", "1")
    if params.get("IsDriverMonitoringEnabled") is None:
        params.put("IsDriverMonitoringEnabled", "1")
    if params.get("IsGeofenceEnabled") is None:
        params.put("IsGeofenceEnabled", "-1")
    if params.get("SpeedLimitOffset") is None:
        params.put("SpeedLimitOffset", "0")
    if params.get("LongitudinalControl") is None:
        params.put("LongitudinalControl", "0")
    if params.get("LimitSetSpeed") is None:
        params.put("LimitSetSpeed", "0")

    # is this chffrplus?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    # put something on screen while we set things up
    if os.getenv("PREPAREONLY") is not None:
        spinner_proc = None
    else:
        spinner_text = "chffrplus" if params.get(
            "Passive") == "1" else "openpilot"
        spinner_proc = subprocess.Popen(
            ["./spinner", "loading %s" % spinner_text],
            cwd=os.path.join(BASEDIR, "selfdrive", "ui", "spinner"),
            close_fds=True)
    try:
        manager_update()
        manager_init()
        manager_prepare()
    finally:
        if spinner_proc:
            spinner_proc.terminate()

    if os.getenv("PREPAREONLY") is not None:
        return

    # SystemExit on sigterm
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)

    if params.get("DoUninstall") == "1":
        uninstall()
Beispiel #15
0
def main():
    if os.getenv("NOLOG") is not None:
        del managed_processes['loggerd']
        del managed_processes['tombstoned']
    if os.getenv("NOUPLOAD") is not None:
        del managed_processes['uploader']
    if os.getenv("NOVISION") is not None:
        del managed_processes['visiond']
    if os.getenv("LEAN") is not None:
        del managed_processes['uploader']
        del managed_processes['loggerd']
        del managed_processes['logmessaged']
        del managed_processes['logcatd']
        del managed_processes['tombstoned']
        del managed_processes['proclogd']
    if os.getenv("NOCONTROL") is not None:
        del managed_processes['controlsd']
        del managed_processes['radard']

    # support additional internal only extensions
    try:
        import selfdrive.manager_extensions
        selfdrive.manager_extensions.register(register_managed_process)
    except ImportError:
        pass

    params = Params()
    params.manager_start()

    # set unset params
    if params.get("IsMetric") is None:
        params.put("IsMetric", "0")
    if params.get("IsRearViewMirror") is None:
        params.put("IsRearViewMirror", "0")
    if params.get("IsFcwEnabled") is None:
        params.put("IsFcwEnabled", "1")
    if params.get("HasAcceptedTerms") is None:
        params.put("HasAcceptedTerms", "0")
    if params.get("IsUploadVideoOverCellularEnabled") is None:
        params.put("IsUploadVideoOverCellularEnabled", "1")

    params.put("Passive", "1" if os.getenv("PASSIVE") else "0")

    # put something on screen while we set things up
    if os.getenv("PREPAREONLY") is not None:
        spinner_proc = None
    else:
        spinner_proc = subprocess.Popen(["./spinner", "loading..."],
                                        cwd=os.path.join(
                                            BASEDIR, "selfdrive", "ui",
                                            "spinner"),
                                        close_fds=True)
    try:
        manager_update()
        manager_init()
        manager_prepare()
    finally:
        if spinner_proc:
            spinner_proc.terminate()

    if os.getenv("PREPAREONLY") is not None:
        return

    # SystemExit on sigterm
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)

    if params.get("DoUninstall") == "1":
        uninstall()
Beispiel #16
0
def main():
    if os.getenv("NOLOG") is not None:
        del managed_processes['loggerd']
        del managed_processes['tombstoned']
    if os.getenv("NOUPLOAD") is not None:
        del managed_processes['uploader']
    if os.getenv("NOVISION") is not None:
        del managed_processes['visiond']
    if os.getenv("NOBOARD") is not None:
        del managed_processes['boardd']
    if os.getenv("LEAN") is not None:
        del managed_processes['uploader']
        del managed_processes['loggerd']
        del managed_processes['logmessaged']
        del managed_processes['logcatd']
        del managed_processes['tombstoned']
        del managed_processes['proclogd']
    if os.getenv("NOCONTROL") is not None:
        del managed_processes['controlsd']
        del managed_processes['radard']

    # support additional internal only extensions
    try:
        import selfdrive.manager_extensions
        selfdrive.manager_extensions.register(register_managed_process)
    except ImportError:
        pass

    params = Params()
    params.manager_start()

    # set unset params
    if params.get("IsMetric") is None:
        params.put("IsMetric", "0")
    if params.get("IsRearViewMirror") is None:
        params.put("IsRearViewMirror", "1")

    # put something on screen while we set things up
    if os.getenv("PREPAREONLY") is not None:
        spinner_proc = None
    else:
        spinner_proc = subprocess.Popen(["./spinner", "loading openpilot..."],
                                        cwd=os.path.join(
                                            BASEDIR, "selfdrive", "ui",
                                            "spinner"),
                                        close_fds=True)
    try:
        manager_init()
        manager_prepare()
    finally:
        if spinner_proc:
            spinner_proc.terminate()

    if os.getenv("PREPAREONLY") is not None:
        sys.exit(0)

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)
Beispiel #17
0
def main():
  # the flippening!
  os.system('LD_LIBRARY_PATH="" content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1')

  # disable bluetooth
  os.system('service call bluetooth_manager 8')

  if os.getenv("NOLOG") is not None:
    del managed_processes['loggerd']
    del managed_processes['tombstoned']
  if os.getenv("NOUPLOAD") is not None:
    del managed_processes['uploader']
  if os.getenv("NOVISION") is not None:
    del managed_processes['visiond']
  if os.getenv("LEAN") is not None:
    del managed_processes['uploader']
    del managed_processes['loggerd']
    del managed_processes['logmessaged']
    del managed_processes['logcatd']
    del managed_processes['tombstoned']
    del managed_processes['proclogd']
  if os.getenv("NOCONTROL") is not None:
    del managed_processes['controlsd']
    del managed_processes['plannerd']
    del managed_processes['radard']

  # support additional internal only extensions
  try:
    import selfdrive.manager_extensions
    selfdrive.manager_extensions.register(register_managed_process) # pylint: disable=no-member
  except ImportError:
    pass

  params = Params()
  params.manager_start()

  # set unset params
  if params.get("CompletedTrainingVersion") is None:
    params.put("CompletedTrainingVersion", "0")
  if params.get("IsMetric") is None:
    params.put("IsMetric", "0")
  if params.get("RecordFront") is None:
    params.put("RecordFront", "0")
  if params.get("HasAcceptedTerms") is None:
    params.put("HasAcceptedTerms", "0")
  if params.get("HasCompletedSetup") is None:
    params.put("HasCompletedSetup", "0")
  if params.get("IsUploadRawEnabled") is None:
    params.put("IsUploadRawEnabled", "1")
  if params.get("IsUploadVideoOverCellularEnabled") is None:
    params.put("IsUploadVideoOverCellularEnabled", "1")
  if params.get("IsGeofenceEnabled") is None:
    params.put("IsGeofenceEnabled", "-1")
  if params.get("SpeedLimitOffset") is None:
    params.put("SpeedLimitOffset", "0")
  if params.get("LongitudinalControl") is None:
    params.put("LongitudinalControl", "0")
  if params.get("LimitSetSpeed") is None:
    params.put("LimitSetSpeed", "0")
  if params.get("LimitSetSpeedNeural") is None:
    params.put("LimitSetSpeedNeural", "0")
  if params.get("LastUpdateTime") is None:
    t = datetime.datetime.now().isoformat()
    params.put("LastUpdateTime", t.encode('utf8'))
  if params.get("OpenpilotEnabledToggle") is None:
    params.put("OpenpilotEnabledToggle", "1")

  # is this chffrplus?
  if os.getenv("PASSIVE") is not None:
    params.put("Passive", str(int(os.getenv("PASSIVE"))))

  if params.get("Passive") is None:
    raise Exception("Passive must be set to continue")

  #with Spinner() as spinner:
      #spinner.update("0") # Show progress bar
      #manager_update()
      #manager_init()
  manager_prepare(None)

  if os.getenv("PREPAREONLY") is not None:
    return

  # SystemExit on sigterm
  signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

  try:
    manager_thread()
  except Exception:
    traceback.print_exc()
    crash.capture_exception()
  finally:
    cleanup_all_processes(None, None)

  if params.get("DoUninstall") == "1":
    uninstall()
Beispiel #18
0
def main():
  # the flippening!
  os.system('LD_LIBRARY_PATH="" content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1')

  # disable bluetooth
  os.system('service call bluetooth_manager 8')

  # support additional internal only extensions
  try:
    import selfdrive.manager_extensions
    selfdrive.manager_extensions.register(register_managed_process)  # pylint: disable=no-member
  except ImportError:
    pass

  params = Params()
  params.manager_start()

  # set unset params
  if params.get("CommunityFeaturesToggle") is None:
    params.put("CommunityFeaturesToggle", "0")
  if params.get("CompletedTrainingVersion") is None:
    params.put("CompletedTrainingVersion", "0")
  if params.get("IsMetric") is None:
    params.put("IsMetric", "0")
  if params.get("RecordFront") is None:
    params.put("RecordFront", "0")
  if params.get("HasAcceptedTerms") is None:
    params.put("HasAcceptedTerms", "0")
  if params.get("HasCompletedSetup") is None:
    params.put("HasCompletedSetup", "0")
  if params.get("IsUploadRawEnabled") is None:
    params.put("IsUploadRawEnabled", "1")
  if params.get("IsLdwEnabled") is None:
    params.put("IsLdwEnabled", "1")
  if params.get("IsGeofenceEnabled") is None:
    params.put("IsGeofenceEnabled", "-1")
  if params.get("SpeedLimitOffset") is None:
    params.put("SpeedLimitOffset", "0")
  if params.get("LongitudinalControl") is None:
    params.put("LongitudinalControl", "0")
  if params.get("LimitSetSpeed") is None:
    params.put("LimitSetSpeed", "0")
  if params.get("LimitSetSpeedNeural") is None:
    params.put("LimitSetSpeedNeural", "0")
  if params.get("LastUpdateTime") is None:
    t = datetime.datetime.now().isoformat()
    params.put("LastUpdateTime", t.encode('utf8'))
  if params.get("OpenpilotEnabledToggle") is None:
    params.put("OpenpilotEnabledToggle", "1")

  # is this chffrplus?
  if os.getenv("PASSIVE") is not None:
    params.put("Passive", str(int(os.getenv("PASSIVE"))))

  if params.get("Passive") is None:
    raise Exception("Passive must be set to continue")

  update_apks()
  manager_init()
  manager_prepare(spinner)
  spinner.close()

  if os.getenv("PREPAREONLY") is not None:
    return

  # SystemExit on sigterm
  signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

  try:
    manager_thread()
  except Exception:
    traceback.print_exc()
    crash.capture_exception()
  finally:
    cleanup_all_processes(None, None)

  if params.get("DoUninstall", encoding='utf8') == "1":
    uninstall()
Beispiel #19
0
def manager_init():

    # update system time from panda
    set_time(cloudlog)

    params = Params()
    params.manager_start()

    default_params = [
        ("CompletedTrainingVersion", "0"),
        ("HasAcceptedTerms", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("IsOpenpilotViewEnabled", "0"),
        ("OpkrAutoShutdown", "2"),
        ("OpkrAutoScreenOff", "0"),
        ("OpkrUIBrightness", "0"),
        ("OpkrUIBrightness", "0"),
        ("OpkrUIVolumeBoost", "0"),
        ("OpkrEnableDriverMonitoring", "1"),
        ("OpkrEnableLogger", "0"),
        ("OpkrEnableGetoffAlert", "1"),
        ("OpkrAutoResume", "1"),
        ("OpkrVariableCruise", "1"),
        ("OpkrLaneChangeSpeed", "45"),
        ("OpkrAutoLaneChangeDelay", "0"),
        ("OpkrSteerAngleCorrection", "0"),
        ("PutPrebuiltOn", "0"),
        ("LdwsCarFix", "0"),
        ("LateralControlMethod", "0"),
        ("CruiseStatemodeSelInit", "1"),
        ("InnerLoopGain", "35"),
        ("OuterLoopGain", "20"),
        ("TimeConstant", "14"),
        ("ActuatorEffectiveness", "20"),
        ("Scale", "1500"),
        ("LqrKi", "15"),
        ("DcGain", "27"),
        ("IgnoreZone", "1"),
        ("PidKp", "20"),
        ("PidKi", "40"),
        ("PidKd", "150"),
        ("PidKf", "5"),
        ("CameraOffsetAdj", "60"),
        ("SteerRatioAdj", "155"),
        ("SteerRatioMaxAdj", "175"),
        ("SteerActuatorDelayAdj", "15"),
        ("SteerRateCostAdj", "35"),
        ("SteerLimitTimerAdj", "40"),
        ("TireStiffnessFactorAdj", "85"),
        ("SteerMaxBaseAdj", "300"),
        ("SteerMaxAdj", "384"),
        ("SteerDeltaUpBaseAdj", "3"),
        ("SteerDeltaUpAdj", "3"),
        ("SteerDeltaDownBaseAdj", "7"),
        ("SteerDeltaDownAdj", "7"),
        ("SteerMaxvAdj", "13"),
        ("OpkrBatteryChargingControl", "1"),
        ("OpkrBatteryChargingMin", "70"),
        ("OpkrBatteryChargingMax", "80"),
        ("LeftCurvOffsetAdj", "0"),
        ("RightCurvOffsetAdj", "0"),
        ("DebugUi1", "0"),
        ("DebugUi2", "0"),
        ("LongLogDisplay", "0"),
        ("OpkrBlindSpotDetect", "1"),
        ("OpkrMaxAngleLimit", "90"),
        ("OpkrSpeedLimitOffset", "0"),
        ("LimitSetSpeedCamera", "0"),
        ("LimitSetSpeedCameraDist", "0"),
        ("OpkrLiveSteerRatio", "1"),
        ("OpkrVariableSteerMax", "1"),
        ("OpkrVariableSteerDelta", "0"),
        ("FingerprintTwoSet", "1"),
        ("OpkrVariableCruiseProfile", "0"),
        ("OpkrLiveTune", "0"),
        ("OpkrDrivingRecord", "0"),
        ("OpkrTurnSteeringDisable", "0"),
        ("CarModel", ""),
        ("CarModelAbb", ""),
        ("OpkrHotspotOnBoot", "0"),
        ("OpkrSSHLegacy", "1"),
        ("ShaneFeedForward", "0"),
        ("CruiseOverMaxSpeed", "0"),
        ("JustDoGearD", "0"),
        ("LanelessMode", "0"),
        ("ComIssueGone", "0"),
        ("MaxSteer", "384"),
        ("MaxRTDelta", "112"),
        ("MaxRateUp", "3"),
        ("MaxRateDown", "7"),
        ("SteerThreshold", "150"),
        ("RecordingCount", "100"),
        ("RecordingQuality", "1"),
        ("CruiseGapAdjust", "0"),
        ("AutoEnable", "1"),
        ("CruiseAutoRes", "0"),
        ("AutoResOption", "0"),
        ("SteerWindDown", "0"),
        ("OpkrMonitoringMode", "0"),
        ("OpkrMonitorEyesThreshold", "75"),
        ("OpkrMonitorNormalEyesThreshold", "50"),
        ("OpkrMonitorBlinkThreshold", "50"),
        ("MadModeEnabled", "1"),
        ("OpenpilotLongitudinalControl", "0"),
        ("OpkrFanSpeedGain", "0"),
    ]

    if TICI:
        default_params.append(("IsUploadRawEnabled", "0"))

    if params.get_bool("RecordFrontLock"):
        params.put_bool("RecordFront", True)

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this dashcam?
    if os.getenv("PASSIVE") is not None:
        params.put_bool("Passive", bool(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    if EON:
        update_apks()

    os.umask(0)  # Make sure we can create files with 777 permissions

    # Create folders needed for msgq
    try:
        os.mkdir("/dev/shm")
    except FileExistsError:
        pass
    except PermissionError:
        print("WARNING: failed to make /dev/shm")

    # set version params
    params.put("Version", version)
    params.put("TermsVersion", terms_version)
    params.put("TrainingVersion", training_version)
    params.put("GitCommit", get_git_commit(default=""))
    params.put("GitBranch", get_git_branch(default=""))
    params.put("GitRemote", get_git_remote(default=""))

    # set dongle id
    reg_res = register(show_spinner=True)
    if reg_res:
        dongle_id = reg_res
    else:
        serial = params.get("HardwareSerial")
        raise Exception(f"Registration failed for device {serial}")
    os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog

    if not dirty:
        os.environ['CLEAN'] = '1'

    cloudlog.bind_global(dongle_id=dongle_id,
                         version=version,
                         dirty=dirty,
                         device=HARDWARE.get_device_type())

    # ensure shared libraries are readable by apks
    if EON:
        os.chmod(BASEDIR, 0o755)
        os.chmod("/dev/shm", 0o777)
        os.chmod(os.path.join(BASEDIR, "cereal"), 0o755)

    #if not (os.getenv("NOLOG") or os.getenv("NOCRASH") or PC):
    #  crash.init()
    crash.bind_user(id=dongle_id)
    crash.bind_extra(dirty=dirty,
                     origin=origin,
                     branch=branch,
                     commit=commit,
                     device=HARDWARE.get_device_type())

    os.system("/data/openpilot/gitcommit.sh")
Beispiel #20
0
def main():
    os.environ['PARAMS_PATH'] = PARAMS

    if ANDROID:
        # the flippening!
        os.system(
            'LD_LIBRARY_PATH="" content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1'
        )

        # disable bluetooth
        os.system('service call bluetooth_manager 8')

    params = Params()
    params.manager_start()

    default_params = [
        ("CommunityFeaturesToggle", "0"),
        ("CompletedTrainingVersion", "0"),
        ("IsRHD", "0"),
        ("IsMetric", "0"),
        ("RecordFront", "0"),
        ("HasAcceptedTerms", "0"),
        ("HasCompletedSetup", "0"),
        ("IsUploadRawEnabled", "1"),
        ("IsLdwEnabled", "1"),
        ("IsGeofenceEnabled", "-1"),
        ("SpeedLimitOffset", "0"),
        ("LongitudinalControl", "0"),
        ("LimitSetSpeed", "0"),
        ("LimitSetSpeedNeural", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("LaneChangeEnabled", "1"),
        ("IsDriverViewEnabled", "0"),
        ("IsOpenpilotViewEnabled", "0"),
        ("OpkrAutoShutdown", "0"),
        ("OpkrAutoScreenOff", "0"),
        ("OpkrUIBrightness", "0"),
        ("OpkrEnableDriverMonitoring", "1"),
        ("OpkrEnableLogger", "0"),
        ("OpkrEnableGetoffAlert", "1"),
        ("OpkrEnableLearner", "0"),
        ("OpkrAutoResume", "1"),
        ("OpkrAccelProfile", "0"),
        ("OpkrAutoLanechangedelay", "0"),
        ("OpkrRunMixplorer", "0"),
        ("OpkrRunQuickedit", "0"),
        ("OpkrRunSoftkey", "0"),
        ("OpkrRunNavigation", "0"),
        ("OpkrBootNavigation", "0"),
        ("PutPrebuiltOn", "0"),
        ("FingerprintIssuedFix", "0"),
        ("LdwsCarFix", "0"),
        ("LateralControlMethod", "0"),
        ("CruiseStatemodeSelInit", "0"),
        ("LateralControlPriority", "0"),
    ]

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this chffrplus?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    if ANDROID:
        update_apks()
    manager_init()
    manager_prepare(spinner)
    spinner.close()

    if os.getenv("PREPAREONLY") is not None:
        return

    # SystemExit on sigterm
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)

    if params.get("DoUninstall", encoding='utf8') == "1":
        uninstall()
Beispiel #21
0
def manager_init(spinner=None):
  params = Params()
  params.manager_start()

  default_params = [
    ("CommunityFeaturesToggle", "0"),
    ("CompletedTrainingVersion", "0"),
    ("IsRHD", "0"),
    ("IsMetric", "1"),
    ("RecordFront", "0"),
    ("HasAcceptedTerms", "0"),
    ("HasCompletedSetup", "0"),
    ("IsUploadRawEnabled", "1"),
    ("IsLdwEnabled", "1"),
    ("LastUpdateTime", datetime.datetime.utcnow().isoformat().encode('utf8')),
    ("OpenpilotEnabledToggle", "1"),
    ("VisionRadarToggle", "0"),
    ("LaneChangeEnabled", "1"),
    ("IsDriverViewEnabled", "0"),
    ("LimitSetSpeed", "0"),
    ("IsOpenpilotViewEnabled", "0"),
    ("OpkrAutoShutdown", "2"),
    ("OpkrAutoScreenOff", "0"),
    ("OpkrUIBrightness", "0"),
    ("OpkrEnableDriverMonitoring", "1"),
    ("OpkrEnableLogger", "0"),
    ("OpkrEnableGetoffAlert", "1"),
    ("OpkrAutoResume", "1"),
    ("OpkrVariableCruise", "1"),
    ("OpkrLaneChangeSpeed", "45"),
    ("OpkrAutoLaneChangeDelay", "0"),
    ("OpkrSteerAngleCorrection", "0"),
    ("PutPrebuiltOn", "0"),
    ("FingerprintIssuedFix", "0"),
    ("LdwsCarFix", "0"),
    ("LateralControlMethod", "0"),
    ("CruiseStatemodeSelInit", "1"),
    ("InnerLoopGain", "35"),
    ("OuterLoopGain", "20"),
    ("TimeConstant", "14"),
    ("ActuatorEffectiveness", "20"),
    ("Scale", "1750"),
    ("LqrKi", "10"),
    ("DcGain", "30"),
    ("IgnoreZone", "1"),
    ("PidKp", "30"),
    ("PidKi", "50"),
    ("PidKd", "150"),
    ("PidKf", "5"),
    ("CameraOffsetAdj", "60"),
    ("SteerRatioAdj", "150"),
    ("SteerRatioMaxAdj", "180"),
    ("SteerActuatorDelayAdj", "0"),
    ("SteerRateCostAdj", "45"),
    ("SteerLimitTimerAdj", "40"),
    ("TireStiffnessFactorAdj", "85"),
    ("SteerMaxAdj", "450"),
    ("SteerMaxBaseAdj", "280"),
    ("SteerDeltaUpAdj", "3"),
    ("SteerDeltaDownAdj", "7"),
    ("SteerMaxvAdj", "10"),
    ("OpkrBatteryChargingControl", "1"),
    ("OpkrBatteryChargingMin", "70"),
    ("OpkrBatteryChargingMax", "80"),
    ("OpkrUiOpen", "0"),
    ("OpkrDriveOpen", "0"),
    ("OpkrTuneOpen", "0"),
    ("OpkrControlOpen", "0"),
    ("LeftCurvOffsetAdj", "0"),
    ("RightCurvOffsetAdj", "0"),
    ("DebugUi1", "0"),
    ("DebugUi2", "0"),
    ("OpkrBlindSpotDetect", "1"),
    ("OpkrMaxAngleLimit", "90"),
    ("OpkrAutoResumeOption", "1"),
    ("OpkrSpeedLimitOffset", "0"),
    ("LimitSetSpeedCamera", "0"),
    ("LimitSetSpeedCameraDist", "0"),
    ("OpkrLiveSteerRatio", "1"),
    ("OpkrVariableSteerMax", "1"),
    ("OpkrVariableSteerDelta", "0"),
    ("FingerprintTwoSet", "1"),
    ("OpkrVariableCruiseProfile", "0"),
    ("OpkrLiveTune", "0"),
    ("OpkrDrivingRecord", "0"),
    ("OpkrTurnSteeringDisable", "0"),
    ("CarModel", ""),
    ("OpkrSafetyCamera", "0"),
    ("OpkrHotspotOnBoot", "0"),
    ("UserOption1", "0"),
    ("UserOption2", "0"),
    ("UserOption3", "0"),
    ("UserOption4", "0"),
    ("UserOption5", "0"),
    ("UserOption6", "0"),
    ("UserOption7", "0"),
    ("UserOption8", "0"),
    ("UserOption9", "0"),
    ("UserOption10", "0"),
    ("UserOptionName1", "설정속도를 현재속도에 동기화"),
    ("UserOptionName2", "Shane's FeedForward 활성화"),
    ("UserOptionName3", "저속 조향각 제한 활성화"),
    ("UserOptionName4", "가변크루즈 사용시 카메라감속만 사용"),
    ("UserOptionName5", ""),
    ("UserOptionName6", ""),
    ("UserOptionName7", ""),
    ("UserOptionName8", ""),
    ("UserOptionName9", ""),
    ("UserOptionName10", ""),
    ("UserOptionNameDescription1", "가변 크루즈 사용시 운전자 가속으로 인해 현재속도가 설정속도보다 높아질 경우 설정속도를 현재속도와 동기화 합니다."),
    ("UserOptionNameDescription2", "PID제어 사용시 Shane's FeedForward를 활성화 합니다. 직선구간에서는 토크를 낮추고 곡선구간에서는 토크를 높여 핸들 움직임을 능동적으로 합니다."),
    ("UserOptionNameDescription3", "저속 주행시 급격한 필요조향각 변화 시 현재조향각 변화를 제한하여 스티어링의 과도한 조향을 억제 합니다"),
    ("UserOptionNameDescription4", "가변크루즈 사용시 카메라감속기능만 사용합니다. 차간거리 및 커브구간 가속/감속 기능은 사용하지 않습니다. ※오파모드에서는 동작하지 않습니다."),
    ("UserOptionNameDescription5", ""),
    ("UserOptionNameDescription6", ""),
    ("UserOptionNameDescription7", ""),
    ("UserOptionNameDescription8", ""),
    ("UserOptionNameDescription9", ""),
    ("UserOptionNameDescription10", ""),
  ]

  # set unset params
  for k, v in default_params:
    if params.get(k) is None:
      params.put(k, v)

  # is this dashcam?
  if os.getenv("PASSIVE") is not None:
    params.put("Passive", str(int(os.getenv("PASSIVE"))))

  if params.get("Passive") is None:
    raise Exception("Passive must be set to continue")

  if EON:
    update_apks()

  os.umask(0)  # Make sure we can create files with 777 permissions

  # Create folders needed for msgq
  try:
    os.mkdir("/dev/shm")
  except FileExistsError:
    pass
  except PermissionError:
    print("WARNING: failed to make /dev/shm")

  # set dongle id
  reg_res = register(spinner)
  if reg_res:
    dongle_id = reg_res
  else:
    raise Exception("server registration failed")
  os.environ['DONGLE_ID'] = dongle_id  # Needed for swaglog and loggerd

  if not dirty:
    os.environ['CLEAN'] = '1'

  cloudlog.bind_global(dongle_id=dongle_id, version=version, dirty=dirty,
                       device=HARDWARE.get_device_type())
  crash.bind_user(id=dongle_id)
  crash.bind_extra(version=version, dirty=dirty, device=HARDWARE.get_device_type())

  # ensure shared libraries are readable by apks
  if EON:
    os.chmod(BASEDIR, 0o755)
    os.chmod("/dev/shm", 0o777)
    os.chmod(os.path.join(BASEDIR, "cereal"), 0o755)
    os.chmod(os.path.join(BASEDIR, "cereal", "libmessaging_shared.so"), 0o755)
Beispiel #22
0
def python_replay_process(cfg, lr):
    sub_sockets = [s for _, sub in cfg.pub_sub.items() for s in sub]
    pub_sockets = [s for s in cfg.pub_sub.keys() if s != 'can']

    fsm = FakeSubMaster(pub_sockets)
    fpm = FakePubMaster(sub_sockets)
    args = (fsm, fpm)
    if 'can' in list(cfg.pub_sub.keys()):
        can_sock = FakeSocket()
        args = (fsm, fpm, can_sock)

    all_msgs = sorted(lr, key=lambda msg: msg.logMonoTime)
    pub_msgs = [
        msg for msg in all_msgs if msg.which() in list(cfg.pub_sub.keys())
    ]

    params = Params()
    params.clear_all()
    params.manager_start()
    params.put("OpenpilotEnabledToggle", "1")
    params.put("Passive", "0")
    params.put("CommunityFeaturesToggle", "1")

    os.environ['NO_RADAR_SLEEP'] = "1"
    os.environ['SKIP_FW_QUERY'] = "1"
    os.environ['FINGERPRINT'] = ""
    for msg in lr:
        if msg.which() == 'carParams':
            # TODO: get a stock VW route
            if "Generic Volkswagen" not in msg.carParams.carFingerprint:
                os.environ['FINGERPRINT'] = msg.carParams.carFingerprint
            break

    manager.prepare_managed_process(cfg.proc_name, build=True)
    mod = importlib.import_module(manager.managed_processes[cfg.proc_name])
    thread = threading.Thread(target=mod.main, args=args)
    thread.daemon = True
    thread.start()

    if cfg.init_callback is not None:
        if 'can' not in list(cfg.pub_sub.keys()):
            can_sock = None
        cfg.init_callback(all_msgs, fsm, can_sock)

    CP = car.CarParams.from_bytes(params.get("CarParams", block=True))

    # wait for started process to be ready
    if 'can' in list(cfg.pub_sub.keys()):
        can_sock.wait_for_recv()
    else:
        fsm.wait_for_update()

    log_msgs, msg_queue = [], []
    for msg in tqdm(pub_msgs):
        if cfg.should_recv_callback is not None:
            recv_socks, should_recv = cfg.should_recv_callback(
                msg, CP, cfg, fsm)
        else:
            recv_socks = [
                s for s in cfg.pub_sub[msg.which()]
                if (fsm.frame + 1) % int(service_list[msg.which()].frequency /
                                         service_list[s].frequency) == 0
            ]
            should_recv = bool(len(recv_socks))

        if msg.which() == 'can':
            can_sock.send(msg.as_builder().to_bytes())
        else:
            msg_queue.append(msg.as_builder())

        if should_recv:
            fsm.update_msgs(0, msg_queue)
            msg_queue = []

            recv_cnt = len(recv_socks)
            while recv_cnt > 0:
                m = fpm.wait_for_msg()
                log_msgs.append(m)

                recv_cnt -= m.which() in recv_socks
    return log_msgs
Beispiel #23
0
def replay_process(cfg, lr):
  sub_sockets = [s for _, sub in cfg.pub_sub.items() for s in sub]
  pub_sockets = [s for s in cfg.pub_sub.keys() if s != 'can']

  fsm = FakeSubMaster(pub_sockets)
  fpm = FakePubMaster(sub_sockets)
  args = (fsm, fpm)
  if 'can' in cfg.pub_sub.keys():
    can_sock = FakeSocket()
    args = (fsm, fpm, can_sock)

  all_msgs = sorted(lr, key=lambda msg: msg.logMonoTime)
  pub_msgs = filter(lambda msg: msg.which() in cfg.pub_sub.keys(), all_msgs)

  params = Params()
  params.manager_start()
  params.put("Passive", "0")

  os.environ['NO_RADAR_SLEEP'] = "1"
  manager.prepare_managed_process(cfg.proc_name)
  mod = importlib.import_module(manager.managed_processes[cfg.proc_name])
  thread = threading.Thread(target=mod.main, args=args)
  thread.daemon = True
  thread.start()

  if cfg.init_callback is not None:
    if 'can' not in cfg.pub_sub.keys():
      can_sock = None
    cfg.init_callback(all_msgs, fsm, can_sock)

  CP = car.CarParams.from_bytes(params.get("CarParams", block=True))

  # wait for started process to be ready
  if 'can' in cfg.pub_sub.keys():
    can_sock.wait_for_recv()
  else:
    fsm.wait_for_update()

  log_msgs, msg_queue = [], []
  for msg in tqdm(pub_msgs):
    if cfg.should_recv_callback is not None:
      recv_socks = cfg.should_recv_callback(msg, CP)
    else:
      recv_socks = [s for s in cfg.pub_sub[msg.which()] if
                      (fsm.frame + 1) % int(service_list[msg.which()].frequency / service_list[s].frequency) == 0]

    should_recv = bool(len(recv_socks))

    if msg.which() == 'can':
      can_sock.send(msg.as_builder().to_bytes())
    else:
      msg_queue.append(msg.as_builder())

    if should_recv:
      fsm.update_msgs(0, msg_queue)
      msg_queue = []

      recv_cnt = len(recv_socks)
      while recv_cnt > 0:
        m = fpm.wait_for_msg()
        log_msgs.append(m)

        recv_cnt -= m.which() in recv_socks
  return log_msgs
Beispiel #24
0
if __name__ == "__main__":

    results = {}
    for route, checks in routes.items():

        if route not in public_routes:
            print "route not public", route
            continue

        get_route_logs(route)

        for _ in range(3):
            shutil.rmtree('/data/params')
            manager.gctx = {}
            params = Params()
            params.manager_start()
            if route in passive_routes:
                params.put("Passive", "1")
            else:
                params.put("Passive", "0")

            print "testing ", route, " ", checks['carFingerprint']
            print "Preparing processes"
            manager.prepare_managed_process("radard")
            manager.prepare_managed_process("controlsd")
            manager.prepare_managed_process("plannerd")
            print "Starting processes"
            manager.start_managed_process("radard")
            manager.start_managed_process("controlsd")
            manager.start_managed_process("plannerd")
            time.sleep(2)
Beispiel #25
0
def main():
    params = Params()
    params.manager_start()

    default_params = [
        ("CommunityFeaturesToggle", "0"),
        ("CompletedTrainingVersion", "0"),
        ("IsRHD", "0"),
        ("IsMetric", "1"),
        ("RecordFront", "0"),
        ("HasAcceptedTerms", "0"),
        ("HasCompletedSetup", "0"),
        ("IsUploadRawEnabled", "1"),
        ("IsLdwEnabled", "1"),
        ("IsGeofenceEnabled", "-1"),
        ("SpeedLimitOffset", "0"),
        ("LimitSetSpeed", "0"),
        ("LimitSetSpeedNeural", "0"),
        ("LastUpdateTime",
         datetime.datetime.utcnow().isoformat().encode('utf8')),
        ("OpenpilotEnabledToggle", "1"),
        ("LaneChangeEnabled", "1"),
        ("IsDriverViewEnabled", "0"),
        ("IsOpenpilotViewEnabled", "0"),
        ("OpkrAutoShutdown", "2"),
        ("OpkrAutoScreenOff", "0"),
        ("OpkrUIBrightness", "0"),
        ("OpkrEnableDriverMonitoring", "1"),
        ("OpkrEnableLogger", "0"),
        ("OpkrEnableGetoffAlert", "1"),
        ("OpkrAutoResume", "1"),
        ("OpkrVariableCruise", "0"),
        ("OpkrLaneChangeSpeed", "60"),
        ("OpkrAutoLaneChangeDelay", "0"),
        ("OpkrSteerAngleCorrection", "0"),
        ("PutPrebuiltOn", "0"),
        ("FingerprintIssuedFix", "0"),
        ("LdwsCarFix", "0"),
        ("LateralControlMethod", "0"),
        ("InnerLoopGain", "30"),
        ("OuterLoopGain", "20"),
        ("TimeConstant", "10"),
        ("ActuatorEffectiveness", "15"),
        ("Scale", "1750"),
        ("LqrKi", "10"),
        ("DcGain", "30"),
        ("IgnoreZone", "1"),
        ("PidKp", "20"),
        ("PidKi", "40"),
        ("PidKd", "150"),
        ("PidKf", "5"),
        ("CameraOffsetAdj", "60"),
        ("SteerRatioAdj", "140"),
        ("SteerActuatorDelayAdj", "35"),
        ("SteerRateCostAdj", "45"),
        ("SteerLimitTimerAdj", "40"),
        ("TireStiffnessFactorAdj", "85"),
        ("SteerMaxAdj", "380"),
        ("SteerMaxBaseAdj", "275"),
        ("SteerDeltaUpAdj", "3"),
        ("SteerDeltaDownAdj", "7"),
        ("SteerMaxvAdj", "10"),
        ("OpkrBatteryChargingControl", "1"),
        ("OpkrBatteryChargingMin", "70"),
        ("OpkrBatteryChargingMax", "80"),
        ("OpkrUiOpen", "0"),
        ("OpkrDriveOpen", "0"),
        ("OpkrTuneOpen", "0"),
        ("OpkrControlOpen", "0"),
        ("LeftCurvOffsetAdj", "0"),
        ("RightCurvOffsetAdj", "0"),
        ("DebugUi1", "0"),
        ("DebugUi2", "0"),
        ("OpkrBlindSpotDetect", "1"),
        ("OpkrMaxAngleLimit", "90"),
        ("OpkrAngleOffsetSelect", "0"),
        ("OpkrCruiseGapSet", "3"),
        ("OpkrLatMode", "0"),
        ("OpkrAccMode", "1"),
        ("LimitSetSpeedCamera", "0"),
        ("LimitSetSpeedCurv", "1"),
        ("OpkrLiveSteerRatio", "0"),
        ("OpkrVariableSteerMax", "1"),
        ("OpkrVariableSteerDelta", "0"),
        ("FingerprintTwoSet", "1"),
        ("OpkrVariableCruiseProfile", "0"),
        ("OpkrLiveTune", "0"),
        ("OpkrEnableMap", "1"),
        ("OpkrDrivingRecord", "0"),
    ]

    # set unset params
    for k, v in default_params:
        if params.get(k) is None:
            params.put(k, v)

    # is this dashcam?
    if os.getenv("PASSIVE") is not None:
        params.put("Passive", str(int(os.getenv("PASSIVE"))))

    if params.get("Passive") is None:
        raise Exception("Passive must be set to continue")

    if EON:
        update_apks()
    manager_init()
    manager_prepare(spinner)
    spinner.close()

    if os.getenv("PREPAREONLY") is not None:
        return

    # SystemExit on sigterm
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(1))

    try:
        manager_thread()
    except Exception:
        traceback.print_exc()
        crash.capture_exception()
    finally:
        cleanup_all_processes(None, None)

    if params.get("DoUninstall", encoding='utf8') == "1":
        cloudlog.warning("uninstalling")
        HARDWARE.uninstall()