Exemplo n.º 1
0
def getVersion():
    return {
        "version": get_version(),
        "remote": get_git_remote(),
        "branch": get_git_branch(),
        "commit": get_git_commit(),
    }
Exemplo n.º 2
0
def main():
    clear_apport_folder(
    )  # Clear apport folder on start, otherwise duplicate crashes won't register
    initial_tombstones = set(get_tombstones())

    sentry_sdk.utils.MAX_STRING_LENGTH = 8192
    sentry_sdk.init(
        "https://[email protected]/157615",
        default_integrations=False,
        release=get_version())

    dongle_id = Params().get("DongleId", encoding='utf-8')
    sentry_sdk.set_user({"id": dongle_id})
    sentry_sdk.set_tag("dirty", get_dirty())
    sentry_sdk.set_tag("origin", get_origin())
    sentry_sdk.set_tag("branch", get_branch())
    sentry_sdk.set_tag("commit", get_commit())
    sentry_sdk.set_tag("device", HARDWARE.get_device_type())

    while True:
        now_tombstones = set(get_tombstones())

        for fn, _ in (now_tombstones - initial_tombstones):
            try:
                cloudlog.info(f"reporting new tombstone {fn}")
                if fn.endswith(".crash"):
                    report_tombstone_apport(fn)
                else:
                    report_tombstone_android(fn)
            except Exception:
                cloudlog.exception(f"Error reporting tombstone {fn}")

        initial_tombstones = now_tombstones
        time.sleep(5)
Exemplo n.º 3
0
    def test_init_data_values(self):
        os.environ["CLEAN"] = random.choice(["0", "1"])

        dongle = ''.join(
            random.choice(string.printable)
            for n in range(random.randint(1, 100)))
        fake_params = [
            # param, initData field, value
            ("DongleId", "dongleId", dongle),
            ("GitCommit", "gitCommit", "commit"),
            ("GitBranch", "gitBranch", "branch"),
            ("GitRemote", "gitRemote", "remote"),
        ]
        params = Params()
        for k, _, v in fake_params:
            params.put(k, v)

        lr = list(LogReader(str(self._gen_bootlog())))
        initData = lr[0].initData

        self.assertTrue(initData.dirty != bool(os.environ["CLEAN"]))
        self.assertEqual(initData.version, get_version())

        if os.path.isfile("/proc/cmdline"):
            with open("/proc/cmdline") as f:
                self.assertEqual(list(initData.kernelArgs),
                                 f.read().strip().split(" "))

            with open("/proc/version") as f:
                self.assertEqual(initData.kernelVersion, f.read())

        for _, k, v in fake_params:
            self.assertEqual(getattr(initData, k), v)
Exemplo n.º 4
0
Arquivo: sentry.py Projeto: neokii/op4
def init(project: SentryProject) -> None:
    # forks like to mess with this, so double check
    comma_remote = is_comma_remote() and "commaai" in get_origin(default="")
    if not comma_remote or not is_registered_device() or PC:
        return

    env = "release" if is_tested_branch() else "master"
    dongle_id = Params().get("DongleId", encoding='utf-8')

    integrations = []
    if project == SentryProject.SELFDRIVE:
        integrations.append(ThreadingIntegration(propagate_hub=True))
    else:
        sentry_sdk.utils.MAX_STRING_LENGTH = 8192

    sentry_sdk.init(project.value,
                    default_integrations=False,
                    release=get_version(),
                    integrations=integrations,
                    traces_sample_rate=1.0,
                    environment=env)

    sentry_sdk.set_user({"id": dongle_id})
    sentry_sdk.set_tag("dirty", is_dirty())
    sentry_sdk.set_tag("origin", get_origin())
    sentry_sdk.set_tag("branch", get_branch())
    sentry_sdk.set_tag("commit", get_commit())
    sentry_sdk.set_tag("device", HARDWARE.get_device_type())

    if project == SentryProject.SELFDRIVE:
        sentry_sdk.Hub.current.start_session()
Exemplo n.º 5
0
def getVersion():
  return {
    "version": get_version(),
    "remote": get_origin(),
    "branch": get_short_branch(),
    "commit": get_commit(),
  }
Exemplo n.º 6
0
def getVersion() -> Dict[str, str]:
    return {
        "version": get_version(),
        "remote": get_origin(''),
        "branch": get_short_branch(''),
        "commit": get_commit(default=''),
    }
Exemplo n.º 7
0
def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
    headers = {}
    if access_token is not None:
        headers['Authorization'] = "JWT " + access_token

    headers['User-Agent'] = "openpilot-" + get_version()

    return requests.request(method,
                            API_HOST + "/" + endpoint,
                            timeout=timeout,
                            headers=headers,
                            params=params)
Exemplo n.º 8
0
def main():
  params = Params()
  dongle_id = params.get("DongleId").decode('utf-8')
  cloudlog.bind_global(dongle_id=dongle_id, version=get_version(), dirty=is_dirty())

  try:
    while 1:
      cloudlog.info("starting athena daemon")
      proc = Process(name='athenad', target=launcher, args=('selfdrive.athena.athenad', 'athenad'))
      proc.start()
      proc.join()
      cloudlog.event("athenad exited", exitcode=proc.exitcode)
      time.sleep(5)
  except Exception:
    cloudlog.exception("manage_athenad.exception")
  finally:
    params.delete(ATHENA_MGR_PID_PARAM)
Exemplo n.º 9
0
def init() -> None:
    sentry_sdk.init(
        "https://[email protected]/77924",
        default_integrations=False,
        integrations=[ThreadingIntegration(propagate_hub=True)],
        release=get_version())
Exemplo n.º 10
0
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Path setup --------------------------------------------------------------

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
from selfdrive.version import get_version
sys.path.insert(0, os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('..'))
VERSION = get_version()

# -- Project information -----------------------------------------------------

project = 'openpilot docs'
copyright = '2021, comma.ai'
author = 'comma.ai'
version = VERSION
release = VERSION
language = 'en'

# -- General configuration ---------------------------------------------------

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
Exemplo n.º 11
0
def manager_init() -> None:
  # update system time from panda
  set_time(cloudlog)

  # save boot log
  #subprocess.call("./bootlog", cwd=os.path.join(BASEDIR, "selfdrive/loggerd"))

  params = Params()
  params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)

  default_params: List[Tuple[str, Union[str, bytes]]] = [
    ("CompletedTrainingVersion", "0"),
    ("DisengageOnAccelerator", "0"),
    ("HasAcceptedTerms", "0"),
    ("OpenpilotEnabledToggle", "1"),
    ("IsMetric", "1"),

    # HKG
    ("LateralControl", "TORQUE"),
    ("UseClusterSpeed", "0"),
    ("LongControlEnabled", "0"),
    ("MadModeEnabled", "1"),
    ("IsLdwsCar", "0"),
    ("LaneChangeEnabled", "0"),
    ("AutoLaneChangeEnabled", "0"),

    ("SccSmootherSlowOnCurves", "0"),
    ("SccSmootherSyncGasPressed", "0"),
    ("StockNaviDecelEnabled", "0"),
    ("KeepSteeringTurnSignals", "0"),
    ("HapticFeedbackWhenSpeedCamera", "0"),
    ("DisableOpFcw", "0"),
    ("ShowDebugUI", "0"),
    ("NewRadarInterface", "0"),
  ]
  if not PC:
    default_params.append(("LastUpdateTime", datetime.datetime.utcnow().isoformat().encode('utf8')))

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

  if not params.get_bool("DisableRadar_Allow"):
    params.delete("DisableRadar")

  # 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", "0"))))

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

  # 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", get_version())
  params.put("TermsVersion", terms_version)
  params.put("TrainingVersion", training_version)
  params.put("GitCommit", get_commit(default=""))
  params.put("GitBranch", get_short_branch(default=""))
  params.put("GitRemote", get_origin(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 is_dirty():
    os.environ['CLEAN'] = '1'

  # init logging
  sentry.init(sentry.SentryProject.SELFDRIVE)
  cloudlog.bind_global(dongle_id=dongle_id, version=get_version(), dirty=is_dirty(),
                       device=HARDWARE.get_device_type())
Exemplo n.º 12
0
def manager_init():
    # update system time from panda
    set_time(cloudlog)

    # save boot log
    subprocess.call("./bootlog",
                    cwd=os.path.join(BASEDIR, "selfdrive/loggerd"))

    params = Params()
    params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)

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

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

    if not params.get_bool("DisableRadar_Allow"):
        params.delete("DisableRadar")

    # 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")

    # 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", get_version())
    params.put("TermsVersion", terms_version)
    params.put("TrainingVersion", training_version)
    params.put("GitCommit", get_commit(default=""))
    params.put("GitBranch", get_short_branch(default=""))
    params.put("GitRemote", get_origin(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 get_dirty():
        os.environ['CLEAN'] = '1'

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

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