parent
3a04a69cbe
commit
cf80f7a28b
242 changed files with 3877 additions and 2547 deletions
@ -0,0 +1,25 @@ |
||||
--- |
||||
name: Bug report |
||||
about: Create a report to help us improve openpilot |
||||
title: '' |
||||
labels: 'bug' |
||||
assignees: '' |
||||
|
||||
--- |
||||
|
||||
**Describe the bug** |
||||
A clear and concise description of what the bug is. |
||||
|
||||
**How to reproduce or log data** |
||||
Steps to reproduce the behavior, or a explorer/cabana link to the exact drive and timestamp of when the bug occurred. |
||||
|
||||
**Expected behavior** |
||||
A clear and concise description of what you expected to happen. |
||||
|
||||
** Device/Version information (please complete the following information):** |
||||
- Device: [e.g. EON/EON Gold] |
||||
- Version: [e.g. 0.6.4], or commit hash when on devel |
||||
- Car make/model [e.g. Toyota Prius 2016] |
||||
|
||||
**Additional context** |
||||
Add any other context about the problem here. |
@ -0,0 +1,21 @@ |
||||
Choose one of the templates below: |
||||
|
||||
# Fingerprint |
||||
This pull requests adds a fingerprint for <Make - Model - Year - Trim>. |
||||
|
||||
This is an explorer link to a drive with the stock system enabled: ... |
||||
|
||||
# Car support |
||||
This pull requests adds support for <Make - Model - Year - Trim>. |
||||
|
||||
This is an explorer link to a drive with the stock system enabled: ... |
||||
This is an explorer link to a drive with openpilot system enabled: ... |
||||
|
||||
# Feature |
||||
This pull requests adds feature X |
||||
|
||||
## Description |
||||
Explain what the feature does |
||||
|
||||
## Testing |
||||
Explain how the feature was tested. Either by the added unit tests, or what tests were performed while driving. |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -0,0 +1,23 @@ |
||||
import os |
||||
import sysconfig |
||||
from Cython.Distutils import build_ext |
||||
|
||||
def get_ext_filename_without_platform_suffix(filename): |
||||
name, ext = os.path.splitext(filename) |
||||
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') |
||||
|
||||
if ext_suffix == ext: |
||||
return filename |
||||
|
||||
ext_suffix = ext_suffix.replace(ext, '') |
||||
idx = name.find(ext_suffix) |
||||
|
||||
if idx == -1: |
||||
return filename |
||||
else: |
||||
return name[:idx] + ext |
||||
|
||||
class BuildExtWithoutPlatformSuffix(build_ext): |
||||
def get_ext_filename(self, ext_name): |
||||
filename = super().get_ext_filename(ext_name) |
||||
return get_ext_filename_without_platform_suffix(filename) |
@ -1,5 +1,9 @@ |
||||
from distutils.core import setup, Extension |
||||
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module |
||||
|
||||
from Cython.Build import cythonize |
||||
|
||||
from common.cython_hacks import BuildExtWithoutPlatformSuffix |
||||
|
||||
setup(name='Simple Kalman Implementation', |
||||
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix}, |
||||
ext_modules=cythonize(Extension("simple_kalman_impl", ["simple_kalman_impl.pyx"]))) |
@ -0,0 +1,28 @@ |
||||
import os |
||||
import subprocess |
||||
from common.basedir import BASEDIR |
||||
|
||||
class Spinner(): |
||||
def __enter__(self): |
||||
self.spinner_proc = subprocess.Popen(["./spinner"], |
||||
stdin=subprocess.PIPE, |
||||
cwd=os.path.join(BASEDIR, "selfdrive", "ui", "spinner"), |
||||
close_fds=True) |
||||
return self |
||||
|
||||
def update(self, spinner_text): |
||||
self.spinner_proc.stdin.write(spinner_text.encode('utf8') + b"\n") |
||||
self.spinner_proc.stdin.flush() |
||||
|
||||
def __exit__(self, type, value, traceback): |
||||
self.spinner_proc.stdin.close() |
||||
self.spinner_proc.terminate() |
||||
|
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
import time |
||||
with Spinner() as s: |
||||
s.update("Spinner text") |
||||
time.sleep(5.0) |
||||
|
@ -1,7 +1,7 @@ |
||||
{ |
||||
"ota_url": "https://commadist.azureedge.net/neosupdate/ota-signed-4db25072191d24e204a816d73ac9e8c727822a26ed3baf01ecae18167fa2eb11.zip", |
||||
"ota_hash": "4db25072191d24e204a816d73ac9e8c727822a26ed3baf01ecae18167fa2eb11", |
||||
"recovery_url": "https://commadist.azureedge.net/neosupdate/recovery-31ef14206d3102edf18fb7417ef32ba2d9f37dd2f4443e234c374a70d1bf4662.img", |
||||
"recovery_len": 15136044, |
||||
"recovery_hash": "31ef14206d3102edf18fb7417ef32ba2d9f37dd2f4443e234c374a70d1bf4662" |
||||
"ota_url": "https://commadist.azureedge.net/neosupdate/ota-signed-7a0117425bc4a6673958d265312994e124654a566228f3cec2f0f9bc8120a9ab.zip", |
||||
"ota_hash": "7a0117425bc4a6673958d265312994e124654a566228f3cec2f0f9bc8120a9ab", |
||||
"recovery_url": "https://commadist.azureedge.net/neosupdate/recovery-3dc234d868c29a3739f6ca3bd47b1c2d3c570d9f478b6849a4fada129ee4af76.img", |
||||
"recovery_len": 15848748, |
||||
"recovery_hash": "3dc234d868c29a3739f6ca3bd47b1c2d3c570d9f478b6849a4fada129ee4af76" |
||||
} |
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,5 +1,9 @@ |
||||
from distutils.core import setup, Extension |
||||
from distutils.core import Extension, setup # pylint: disable=import-error,no-name-in-module |
||||
|
||||
from Cython.Build import cythonize |
||||
|
||||
from common.cython_hacks import BuildExtWithoutPlatformSuffix |
||||
|
||||
setup(name='CAN Packer API Implementation', |
||||
cmdclass={'build_ext': BuildExtWithoutPlatformSuffix}, |
||||
ext_modules=cythonize(Extension("packer_impl", ["packer_impl.pyx"], language="c++", extra_compile_args=["-std=c++11"]))) |
||||
|
@ -1 +0,0 @@ |
||||
PYTHONPATH=`realpath ../../../` python chryslercan_test.py |
@ -1,55 +1,57 @@ |
||||
from selfdrive.car.chrysler import chryslercan |
||||
from selfdrive.can.packer import CANPacker |
||||
import unittest |
||||
|
||||
from cereal import car |
||||
from selfdrive.can.packer import CANPacker |
||||
from selfdrive.car.chrysler import chryslercan |
||||
|
||||
VisualAlert = car.CarControl.HUDControl.VisualAlert |
||||
GearShifter = car.CarState.GearShifter |
||||
|
||||
import unittest |
||||
|
||||
|
||||
class TestChryslerCan(unittest.TestCase): |
||||
|
||||
def test_checksum(self): |
||||
self.assertEqual(0x75, chryslercan.calc_checksum([0x01, 0x20])) |
||||
self.assertEqual(0xcc, chryslercan.calc_checksum([0x14, 0, 0, 0, 0x20])) |
||||
self.assertEqual(0x75, chryslercan.calc_checksum(b"\x01\x20")) |
||||
self.assertEqual(0xcc, chryslercan.calc_checksum(b"\x14\x00\x00\x00\x20")) |
||||
|
||||
def test_hud(self): |
||||
packer = CANPacker('chrysler_pacifica_2017_hybrid') |
||||
self.assertEqual( |
||||
[0x2a6, 0, '0100010100000000'.decode('hex'), 0], |
||||
[0x2a6, 0, b'\x01\x00\x01\x01\x00\x00\x00\x00', 0], |
||||
chryslercan.create_lkas_hud( |
||||
packer, |
||||
'park', False, False, 1, 0)) |
||||
GearShifter.park, False, False, 1, 0)) |
||||
self.assertEqual( |
||||
[0x2a6, 0, '0100010000000000'.decode('hex'), 0], |
||||
[0x2a6, 0, b'\x01\x00\x01\x00\x00\x00\x00\x00', 0], |
||||
chryslercan.create_lkas_hud( |
||||
packer, |
||||
'park', False, False, 5*4, 0)) |
||||
GearShifter.park, False, False, 5*4, 0)) |
||||
self.assertEqual( |
||||
[0x2a6, 0, '0100010000000000'.decode('hex'), 0], |
||||
[0x2a6, 0, b'\x01\x00\x01\x00\x00\x00\x00\x00', 0], |
||||
chryslercan.create_lkas_hud( |
||||
packer, |
||||
'park', False, False, 99999, 0)) |
||||
GearShifter.park, False, False, 99999, 0)) |
||||
self.assertEqual( |
||||
[0x2a6, 0, '0200060000000000'.decode('hex'), 0], |
||||
[0x2a6, 0, b'\x02\x00\x06\x00\x00\x00\x00\x00', 0], |
||||
chryslercan.create_lkas_hud( |
||||
packer, |
||||
'drive', True, False, 99999, 0)) |
||||
GearShifter.drive, True, False, 99999, 0)) |
||||
self.assertEqual( |
||||
[0x2a6, 0, '0264060000000000'.decode('hex'), 0], |
||||
[0x2a6, 0, b'\x02\x64\x06\x00\x00\x00\x00\x00', 0], |
||||
chryslercan.create_lkas_hud( |
||||
packer, |
||||
'drive', True, False, 99999, 0x64)) |
||||
GearShifter.drive, True, False, 99999, 0x64)) |
||||
|
||||
def test_command(self): |
||||
packer = CANPacker('chrysler_pacifica_2017_hybrid') |
||||
self.assertEqual( |
||||
[0x292, 0, '140000001086'.decode('hex'), 0], |
||||
[0x292, 0, b'\x14\x00\x00\x00\x10\x86', 0], |
||||
chryslercan.create_lkas_command( |
||||
packer, |
||||
0, True, 1)) |
||||
self.assertEqual( |
||||
[0x292, 0, '040000008083'.decode('hex'), 0], |
||||
[0x292, 0, b'\x04\x00\x00\x00\x80\x83', 0], |
||||
chryslercan.create_lkas_command( |
||||
packer, |
||||
0, False, 8)) |
@ -1,18 +1,5 @@ |
||||
#!/usr/bin/env python |
||||
import os |
||||
import time |
||||
from cereal import car |
||||
#!/usr/bin/env python3 |
||||
from selfdrive.car.interfaces import RadarInterfaceBase |
||||
|
||||
class RadarInterface(object): |
||||
def __init__(self, CP): |
||||
# radar |
||||
self.pts = {} |
||||
self.delay = 0.1 |
||||
|
||||
def update(self, can_strings): |
||||
ret = car.RadarData.new_message() |
||||
|
||||
if 'NO_RADAR_SLEEP' not in os.environ: |
||||
time.sleep(0.05) # radard runs on RI updates |
||||
|
||||
return ret |
||||
class RadarInterface(RadarInterfaceBase): |
||||
pass |
||||
|
@ -0,0 +1,39 @@ |
||||
import os |
||||
import time |
||||
from cereal import car |
||||
from selfdrive.car import gen_empty_fingerprint |
||||
|
||||
# generic car and radar interfaces |
||||
|
||||
class CarInterfaceBase(): |
||||
def __init__(self, CP, CarController): |
||||
pass |
||||
|
||||
@staticmethod |
||||
def calc_accel_override(a_ego, a_target, v_ego, v_target): |
||||
return 1. |
||||
|
||||
@staticmethod |
||||
def get_params(candidate, fingerprint=gen_empty_fingerprint(), vin="", has_relay=False): |
||||
raise NotImplementedError |
||||
|
||||
# returns a car.CarState, pass in car.CarControl |
||||
def update(self, c, can_strings): |
||||
raise NotImplementedError |
||||
|
||||
# return sendcan, pass in a car.CarControl |
||||
def apply(self, c): |
||||
raise NotImplementedError |
||||
|
||||
class RadarInterfaceBase(): |
||||
def __init__(self, CP): |
||||
self.pts = {} |
||||
self.delay = 0 |
||||
|
||||
def update(self, can_strings): |
||||
ret = car.RadarData.new_message() |
||||
|
||||
if 'NO_RADAR_SLEEP' not in os.environ: |
||||
time.sleep(0.05) # radard runs on RI updates |
||||
|
||||
return ret |
@ -1,15 +1,5 @@ |
||||
#!/usr/bin/env python |
||||
from cereal import car |
||||
import time |
||||
#!/usr/bin/env python3 |
||||
from selfdrive.car.interfaces import RadarInterfaceBase |
||||
|
||||
|
||||
class RadarInterface(object): |
||||
def __init__(self, CP): |
||||
# radar |
||||
self.pts = {} |
||||
self.delay = 0.1 |
||||
|
||||
def update(self, can_strings): |
||||
ret = car.RadarData.new_message() |
||||
time.sleep(0.05) # radard runs on RI updates |
||||
return ret |
||||
class RadarInterface(RadarInterfaceBase): |
||||
pass |
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue