Copy disabled (too large)
Download .txt
Showing preview only (17,278K chars total). Download the full file to get everything.
Repository: eFiniLan/xnxpilot
Branch: 0.8.9
Commit: 9a3da4199628
Files: 1333
Total size: 168.7 MB
Directory structure:
gitextract_fiiqppqd/
├── .gitignore
├── CHANGELOGS-DEV.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── HOWTO-ONEPLUS.md
├── HOWTO-Translate.md
├── Jenkinsfile
├── LICENSE
├── README-openpilot.md
├── README.md
├── RELEASES.md
├── SAFETY.md
├── SConstruct
├── cereal/
│ ├── .gitignore
│ ├── SConscript
│ ├── __init__.py
│ ├── car.capnp
│ ├── dp.capnp
│ ├── include/
│ │ ├── c++.capnp
│ │ └── java.capnp
│ ├── legacy.capnp
│ ├── log.capnp
│ ├── logger/
│ │ └── logger.h
│ ├── messaging/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── bridge.cc
│ │ ├── impl_msgq.cc
│ │ ├── impl_msgq.h
│ │ ├── impl_zmq.cc
│ │ ├── impl_zmq.h
│ │ ├── messaging.cc
│ │ ├── messaging.h
│ │ ├── messaging.pxd
│ │ ├── messaging_pyx.pyx
│ │ ├── msgq.cc
│ │ ├── msgq.h
│ │ └── socketmaster.cc
│ ├── services.py
│ └── visionipc/
│ ├── .gitignore
│ ├── __init__.py
│ ├── ipc.cc
│ ├── ipc.h
│ ├── test_runner.cc
│ ├── visionbuf.cc
│ ├── visionbuf.h
│ ├── visionbuf_cl.cc
│ ├── visionbuf_ion.cc
│ ├── visionipc.h
│ ├── visionipc.pxd
│ ├── visionipc_client.cc
│ ├── visionipc_client.h
│ ├── visionipc_pyx.pyx
│ ├── visionipc_server.cc
│ ├── visionipc_server.h
│ └── visionipc_tests.cc
├── common/
│ ├── .gitignore
│ ├── SConscript
│ ├── __init__.py
│ ├── api/
│ │ └── __init__.py
│ ├── basedir.py
│ ├── clock.pyx
│ ├── cython_hacks.py
│ ├── dict_helpers.py
│ ├── dp_common.py
│ ├── dp_conf.py
│ ├── dp_time.py
│ ├── ffi_wrapper.py
│ ├── file_helpers.py
│ ├── filter_simple.py
│ ├── gpio.py
│ ├── i18n.py
│ ├── kalman/
│ │ ├── .gitignore
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── simple_kalman.py
│ │ ├── simple_kalman_impl.pxd
│ │ ├── simple_kalman_impl.pyx
│ │ ├── simple_kalman_old.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ └── test_simple_kalman.py
│ ├── logging_extra.py
│ ├── numpy_fast.py
│ ├── params.py
│ ├── params_pxd.pxd
│ ├── params_pyx.pyx
│ ├── profiler.py
│ ├── realtime.py
│ ├── spinner.py
│ ├── stat_live.py
│ ├── text_window.py
│ ├── timeout.py
│ ├── transformations/
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── camera.py
│ │ ├── coordinates.cc
│ │ ├── coordinates.hpp
│ │ ├── coordinates.py
│ │ ├── model.py
│ │ ├── orientation.cc
│ │ ├── orientation.hpp
│ │ ├── orientation.py
│ │ ├── transformations.pxd
│ │ └── transformations.pyx
│ └── xattr.py
├── installer/
│ ├── custom/
│ │ ├── install_gfortran.sh
│ │ └── termux-elf-cleaner/
│ │ ├── COPYING
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── elf.h
│ │ └── termux-elf-cleaner.cpp
│ └── updater/
│ ├── Makefile
│ ├── oneplus.json
│ ├── update.json
│ └── updater
├── jetson/
│ ├── env_installer.sh
│ ├── launcher.sh
│ ├── openpilot_env.sh
│ └── release.py
├── launch_chffrplus.sh
├── launch_env.sh
├── launch_openpilot.sh
├── models/
│ └── supercombo.onnx
├── opendbc/
│ ├── .gitignore
│ ├── __init__.py
│ ├── acura_ilx_2016_can_generated.dbc
│ ├── acura_ilx_2016_nidec.dbc
│ ├── acura_rdx_2018_can_generated.dbc
│ ├── acura_rdx_2020_can_generated.dbc
│ ├── can/
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── can_define.py
│ │ ├── common.cc
│ │ ├── common.h
│ │ ├── common.pxd
│ │ ├── common_dbc.h
│ │ ├── dbc.cc
│ │ ├── dbc.py
│ │ ├── dbc_out/
│ │ │ ├── .gitignore
│ │ │ └── .gitkeep
│ │ ├── dbc_template.cc
│ │ ├── packer.cc
│ │ ├── packer.py
│ │ ├── packer_pyx.pyx
│ │ ├── parser.cc
│ │ ├── parser.py
│ │ ├── parser_pyx.pyx
│ │ └── process_dbc.py
│ ├── chrysler_pacifica_2017_hybrid.dbc
│ ├── chrysler_pacifica_2017_hybrid_private_fusion.dbc
│ ├── ford_fusion_2018_adas.dbc
│ ├── ford_fusion_2018_pt.dbc
│ ├── gm_global_a_chassis.dbc
│ ├── gm_global_a_object.dbc
│ ├── gm_global_a_powertrain.dbc
│ ├── honda_accord_2018_can_generated.dbc
│ ├── honda_civic_hatchback_ex_2017_can_generated.dbc
│ ├── honda_civic_sedan_16_diesel_2019_can_generated.dbc
│ ├── honda_civic_touring_2016_can_generated.dbc
│ ├── honda_crv_ex_2017_body_generated.dbc
│ ├── honda_crv_ex_2017_can_generated.dbc
│ ├── honda_crv_executive_2016_can_generated.dbc
│ ├── honda_crv_hybrid_2019_can_generated.dbc
│ ├── honda_crv_touring_2016_can_generated.dbc
│ ├── honda_fit_ex_2018_can_generated.dbc
│ ├── honda_insight_ex_2019_can_generated.dbc
│ ├── honda_odyssey_exl_2018_generated.dbc
│ ├── honda_odyssey_extreme_edition_2018_china_can_generated.dbc
│ ├── honda_pilot_touring_2017_can_generated.dbc
│ ├── honda_ridgeline_black_edition_2017_can_generated.dbc
│ ├── hyundai_kia_generic.dbc
│ ├── lexus_ct200h_2018_pt_generated.dbc
│ ├── lexus_is300h_2017_pt_generated.dbc
│ ├── lexus_is_2018_pt_generated.dbc
│ ├── lexus_nx300_2018_pt_generated.dbc
│ ├── lexus_nx300h_2018_pt_generated.dbc
│ ├── lexus_rx_350_2016_pt_generated.dbc
│ ├── lexus_rx_hybrid_2017_pt_generated.dbc
│ ├── mazda_2017.dbc
│ ├── nissan_leaf_2018.dbc
│ ├── nissan_x_trail_2017.dbc
│ ├── subaru_forester_2017_generated.dbc
│ ├── subaru_global_2017_generated.dbc
│ ├── subaru_outback_2015_generated.dbc
│ ├── subaru_outback_2019_generated.dbc
│ ├── tesla_can.dbc
│ ├── tesla_radar.dbc
│ ├── toyota_adas.dbc
│ ├── toyota_avalon_2017_pt_generated.dbc
│ ├── toyota_camry_hybrid_2018_pt_generated.dbc
│ ├── toyota_corolla_2017_pt_generated.dbc
│ ├── toyota_highlander_2017_pt_generated.dbc
│ ├── toyota_highlander_hybrid_2018_pt_generated.dbc
│ ├── toyota_nodsu_hybrid_pt_generated.dbc
│ ├── toyota_nodsu_pt_generated.dbc
│ ├── toyota_prius_2017_pt_generated.dbc
│ ├── toyota_prius_alpha_2017_pt_generated.dbc
│ ├── toyota_rav4_2017_pt_generated.dbc
│ ├── toyota_rav4_hybrid_2017_pt_generated.dbc
│ ├── toyota_sienna_xle_2018_pt_generated.dbc
│ ├── toyota_tss2_adas.dbc
│ └── vw_mqb_2010.dbc
├── panda/
│ ├── .gitignore
│ ├── __init__.py
│ ├── board/
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── boards/
│ │ │ ├── black.h
│ │ │ ├── board_declarations.h
│ │ │ ├── dos.h
│ │ │ ├── grey.h
│ │ │ ├── pedal.h
│ │ │ ├── red.h
│ │ │ ├── uno.h
│ │ │ ├── unused_funcs.h
│ │ │ └── white.h
│ │ ├── bootstub.c
│ │ ├── bootstub_declarations.h
│ │ ├── build_all.sh
│ │ ├── config.h
│ │ ├── crc.h
│ │ ├── critical.h
│ │ ├── drivers/
│ │ │ ├── bxcan.h
│ │ │ ├── can_common.h
│ │ │ ├── fan.h
│ │ │ ├── fdcan.h
│ │ │ ├── gmlan_alt.h
│ │ │ ├── gpio.h
│ │ │ ├── harness.h
│ │ │ ├── interrupts.h
│ │ │ ├── kline_init.h
│ │ │ ├── pwm.h
│ │ │ ├── registers.h
│ │ │ ├── rtc.h
│ │ │ ├── timers.h
│ │ │ ├── uart.h
│ │ │ └── usb.h
│ │ ├── early_init.h
│ │ ├── faults.h
│ │ ├── flash.sh
│ │ ├── flash_h7.sh
│ │ ├── flasher.h
│ │ ├── get_sdk.sh
│ │ ├── get_sdk_mac.sh
│ │ ├── libc.h
│ │ ├── main.c
│ │ ├── main_declarations.h
│ │ ├── obj/
│ │ │ └── .placeholder
│ │ ├── pedal/
│ │ │ ├── .gitignore
│ │ │ ├── README
│ │ │ ├── flash_can.sh
│ │ │ ├── main.c
│ │ │ ├── main_declarations.h
│ │ │ └── recover.sh
│ │ ├── power_saving.h
│ │ ├── provision.h
│ │ ├── recover.sh
│ │ ├── recover_h7.sh
│ │ ├── safety/
│ │ │ ├── safety_chrysler.h
│ │ │ ├── safety_defaults.h
│ │ │ ├── safety_elm327.h
│ │ │ ├── safety_ford.h
│ │ │ ├── safety_gm.h
│ │ │ ├── safety_gm_ascm.h
│ │ │ ├── safety_honda.h
│ │ │ ├── safety_hyundai.h
│ │ │ ├── safety_mazda.h
│ │ │ ├── safety_nissan.h
│ │ │ ├── safety_subaru.h
│ │ │ ├── safety_tesla.h
│ │ │ ├── safety_toyota.h
│ │ │ └── safety_volkswagen.h
│ │ ├── safety.h
│ │ ├── safety_declarations.h
│ │ ├── stm32fx/
│ │ │ ├── board.h
│ │ │ ├── clock.h
│ │ │ ├── clock_source.h
│ │ │ ├── inc/
│ │ │ │ ├── cmsis_compiler.h
│ │ │ │ ├── cmsis_gcc.h
│ │ │ │ ├── cmsis_version.h
│ │ │ │ ├── core_cm3.h
│ │ │ │ ├── core_cm4.h
│ │ │ │ ├── mpu_armv7.h
│ │ │ │ ├── stm32f205xx.h
│ │ │ │ ├── stm32f2xx.h
│ │ │ │ ├── stm32f2xx_hal_def.h
│ │ │ │ ├── stm32f2xx_hal_gpio_ex.h
│ │ │ │ ├── stm32f413xx.h
│ │ │ │ ├── stm32f4xx.h
│ │ │ │ ├── stm32f4xx_hal_def.h
│ │ │ │ ├── stm32f4xx_hal_gpio_ex.h
│ │ │ │ ├── system_stm32f2xx.h
│ │ │ │ └── system_stm32f4xx.h
│ │ │ ├── interrupt_handlers.h
│ │ │ ├── lladc.h
│ │ │ ├── llbxcan.h
│ │ │ ├── lldac.h
│ │ │ ├── llfan.h
│ │ │ ├── llflash.h
│ │ │ ├── llrtc.h
│ │ │ ├── llspi.h
│ │ │ ├── lluart.h
│ │ │ ├── llusb.h
│ │ │ ├── peripherals.h
│ │ │ ├── startup_stm32f205xx.s
│ │ │ ├── startup_stm32f413xx.s
│ │ │ ├── stm32fx_config.h
│ │ │ └── stm32fx_flash.ld
│ │ ├── stm32h7/
│ │ │ ├── board.h
│ │ │ ├── clock.h
│ │ │ ├── inc/
│ │ │ │ ├── cmsis_compiler.h
│ │ │ │ ├── cmsis_gcc.h
│ │ │ │ ├── cmsis_version.h
│ │ │ │ ├── core_cm7.h
│ │ │ │ ├── mpu_armv8.h
│ │ │ │ ├── stm32h725xx.h
│ │ │ │ ├── stm32h735xx.h
│ │ │ │ ├── stm32h7xx.h
│ │ │ │ ├── stm32h7xx_hal_def.h
│ │ │ │ ├── stm32h7xx_hal_gpio_ex.h
│ │ │ │ └── system_stm32h7xx.h
│ │ │ ├── interrupt_handlers.h
│ │ │ ├── lladc.h
│ │ │ ├── llfan.h
│ │ │ ├── llfdcan.h
│ │ │ ├── llflash.h
│ │ │ ├── llrtc.h
│ │ │ ├── lluart.h
│ │ │ ├── llusb.h
│ │ │ ├── peripherals.h
│ │ │ ├── startup_stm32h7x5xx.s
│ │ │ ├── stm32h7_config.h
│ │ │ └── stm32h7x5_flash.ld
│ │ └── tests/
│ │ └── test_rsa.c
│ ├── certs/
│ │ ├── debug
│ │ ├── debug.pub
│ │ └── release.pub
│ ├── crypto/
│ │ ├── hash-internal.h
│ │ ├── rsa.c
│ │ ├── rsa.h
│ │ ├── sha.c
│ │ ├── sha.h
│ │ ├── sign.py
│ │ └── stdint.h
│ ├── examples/
│ │ └── query_fw_versions.py
│ └── python/
│ ├── __init__.py
│ ├── config.py
│ ├── dfu.py
│ ├── flash_release.py
│ ├── isotp.py
│ ├── serial.py
│ ├── uds.py
│ └── update.py
├── phonelibs/
│ ├── SConscript
│ ├── android_frameworks_native/
│ │ ├── get.txt
│ │ └── include/
│ │ ├── android/
│ │ │ ├── asset_manager.h
│ │ │ ├── asset_manager_jni.h
│ │ │ ├── bitmap.h
│ │ │ ├── configuration.h
│ │ │ ├── input.h
│ │ │ ├── keycodes.h
│ │ │ ├── looper.h
│ │ │ ├── multinetwork.h
│ │ │ ├── native_activity.h
│ │ │ ├── native_window.h
│ │ │ ├── native_window_jni.h
│ │ │ ├── obb.h
│ │ │ ├── rect.h
│ │ │ ├── sensor.h
│ │ │ ├── storage_manager.h
│ │ │ ├── trace.h
│ │ │ └── window.h
│ │ ├── binder/
│ │ │ ├── AppOpsManager.h
│ │ │ ├── Binder.h
│ │ │ ├── BinderService.h
│ │ │ ├── BpBinder.h
│ │ │ ├── BufferedTextOutput.h
│ │ │ ├── Debug.h
│ │ │ ├── IAppOpsCallback.h
│ │ │ ├── IAppOpsService.h
│ │ │ ├── IBatteryStats.h
│ │ │ ├── IBinder.h
│ │ │ ├── IInterface.h
│ │ │ ├── IMemory.h
│ │ │ ├── IPCThreadState.h
│ │ │ ├── IPermissionController.h
│ │ │ ├── IProcessInfoService.h
│ │ │ ├── IServiceManager.h
│ │ │ ├── MemoryBase.h
│ │ │ ├── MemoryDealer.h
│ │ │ ├── MemoryHeapBase.h
│ │ │ ├── MemoryHeapIon.h
│ │ │ ├── Parcel.h
│ │ │ ├── PermissionCache.h
│ │ │ ├── ProcessInfoService.h
│ │ │ ├── ProcessState.h
│ │ │ └── TextOutput.h
│ │ ├── gui/
│ │ │ ├── BitTube.h
│ │ │ ├── BufferItem.h
│ │ │ ├── BufferItemConsumer.h
│ │ │ ├── BufferQueue.h
│ │ │ ├── BufferQueueConsumer.h
│ │ │ ├── BufferQueueCore.h
│ │ │ ├── BufferQueueDefs.h
│ │ │ ├── BufferQueueProducer.h
│ │ │ ├── BufferSlot.h
│ │ │ ├── ConsumerBase.h
│ │ │ ├── CpuConsumer.h
│ │ │ ├── DisplayEventReceiver.h
│ │ │ ├── GLConsumer.h
│ │ │ ├── GraphicBufferAlloc.h
│ │ │ ├── GuiConfig.h
│ │ │ ├── IConsumerListener.h
│ │ │ ├── IDisplayEventConnection.h
│ │ │ ├── IGraphicBufferAlloc.h
│ │ │ ├── IGraphicBufferConsumer.h
│ │ │ ├── IGraphicBufferProducer.h
│ │ │ ├── IProducerListener.h
│ │ │ ├── ISensorEventConnection.h
│ │ │ ├── ISensorServer.h
│ │ │ ├── ISurfaceComposer.h
│ │ │ ├── ISurfaceComposerClient.h
│ │ │ ├── Sensor.h
│ │ │ ├── SensorEventQueue.h
│ │ │ ├── SensorManager.h
│ │ │ ├── StreamSplitter.h
│ │ │ ├── Surface.h
│ │ │ ├── SurfaceComposerClient.h
│ │ │ └── SurfaceControl.h
│ │ └── ui/
│ │ ├── ANativeObjectBase.h
│ │ ├── DisplayInfo.h
│ │ ├── DisplayStatInfo.h
│ │ ├── Fence.h
│ │ ├── FrameStats.h
│ │ ├── FramebufferNativeWindow.h
│ │ ├── GraphicBuffer.h
│ │ ├── GraphicBufferAllocator.h
│ │ ├── GraphicBufferMapper.h
│ │ ├── PixelFormat.h
│ │ ├── Point.h
│ │ ├── Rect.h
│ │ ├── Region.h
│ │ ├── TMatHelpers.h
│ │ ├── TVecHelpers.h
│ │ ├── UiConfig.h
│ │ ├── mat4.h
│ │ ├── vec2.h
│ │ ├── vec3.h
│ │ └── vec4.h
│ ├── android_hardware_libhardware/
│ │ └── include/
│ │ └── hardware/
│ │ ├── activity_recognition.h
│ │ ├── audio.h
│ │ ├── audio_alsaops.h
│ │ ├── audio_amplifier.h
│ │ ├── audio_effect.h
│ │ ├── audio_policy.h
│ │ ├── bluetooth.h
│ │ ├── bt_av.h
│ │ ├── bt_common_types.h
│ │ ├── bt_gatt.h
│ │ ├── bt_gatt_client.h
│ │ ├── bt_gatt_server.h
│ │ ├── bt_gatt_types.h
│ │ ├── bt_hd.h
│ │ ├── bt_hf.h
│ │ ├── bt_hf_client.h
│ │ ├── bt_hh.h
│ │ ├── bt_hl.h
│ │ ├── bt_mce.h
│ │ ├── bt_pan.h
│ │ ├── bt_rc.h
│ │ ├── bt_sdp.h
│ │ ├── bt_sock.h
│ │ ├── camera.h
│ │ ├── camera2.h
│ │ ├── camera3.h
│ │ ├── camera_common.h
│ │ ├── consumerir.h
│ │ ├── display_defs.h
│ │ ├── fb.h
│ │ ├── fingerprint.h
│ │ ├── fused_location.h
│ │ ├── gatekeeper.h
│ │ ├── gps.h
│ │ ├── gralloc.h
│ │ ├── hardware.h
│ │ ├── hdmi_cec.h
│ │ ├── hw_auth_token.h
│ │ ├── hwcomposer.h
│ │ ├── hwcomposer_defs.h
│ │ ├── input.h
│ │ ├── keymaster0.h
│ │ ├── keymaster1.h
│ │ ├── keymaster_common.h
│ │ ├── keymaster_defs.h
│ │ ├── lights.h
│ │ ├── local_time_hal.h
│ │ ├── memtrack.h
│ │ ├── nfc.h
│ │ ├── nfc_tag.h
│ │ ├── power.h
│ │ ├── qemu_pipe.h
│ │ ├── qemud.h
│ │ ├── radio.h
│ │ ├── sensors.h
│ │ ├── sound_trigger.h
│ │ ├── tv_input.h
│ │ ├── vibrator.h
│ │ └── wipower.h
│ ├── android_system_core/
│ │ └── include/
│ │ ├── cutils/
│ │ │ ├── android_reboot.h
│ │ │ ├── aref.h
│ │ │ ├── ashmem.h
│ │ │ ├── atomic.h
│ │ │ ├── bitops.h
│ │ │ ├── compiler.h
│ │ │ ├── config_utils.h
│ │ │ ├── debugger.h
│ │ │ ├── fs.h
│ │ │ ├── hashmap.h
│ │ │ ├── iosched_policy.h
│ │ │ ├── jstring.h
│ │ │ ├── klog.h
│ │ │ ├── list.h
│ │ │ ├── log.h
│ │ │ ├── memory.h
│ │ │ ├── misc.h
│ │ │ ├── multiuser.h
│ │ │ ├── native_handle.h
│ │ │ ├── open_memstream.h
│ │ │ ├── partition_utils.h
│ │ │ ├── process_name.h
│ │ │ ├── properties.h
│ │ │ ├── qtaguid.h
│ │ │ ├── record_stream.h
│ │ │ ├── sched_policy.h
│ │ │ ├── sockets.h
│ │ │ ├── str_parms.h
│ │ │ ├── threads.h
│ │ │ ├── trace.h
│ │ │ └── uevent.h
│ │ ├── log/
│ │ │ ├── event_tag_map.h
│ │ │ ├── log.h
│ │ │ ├── log_read.h
│ │ │ ├── logd.h
│ │ │ ├── logger.h
│ │ │ ├── logprint.h
│ │ │ └── uio.h
│ │ ├── system/
│ │ │ ├── camera.h
│ │ │ ├── graphics.h
│ │ │ ├── radio.h
│ │ │ ├── thread_defs.h
│ │ │ └── window.h
│ │ └── utils/
│ │ ├── AndroidThreads.h
│ │ ├── Atomic.h
│ │ ├── BasicHashtable.h
│ │ ├── BitSet.h
│ │ ├── BlobCache.h
│ │ ├── ByteOrder.h
│ │ ├── CallStack.h
│ │ ├── Compat.h
│ │ ├── Condition.h
│ │ ├── Debug.h
│ │ ├── Endian.h
│ │ ├── Errors.h
│ │ ├── FileMap.h
│ │ ├── Flattenable.h
│ │ ├── Functor.h
│ │ ├── JenkinsHash.h
│ │ ├── KeyedVector.h
│ │ ├── LinearTransform.h
│ │ ├── List.h
│ │ ├── Log.h
│ │ ├── Looper.h
│ │ ├── LruCache.h
│ │ ├── Mutex.h
│ │ ├── NativeHandle.h
│ │ ├── Printer.h
│ │ ├── ProcessCallStack.h
│ │ ├── PropertyMap.h
│ │ ├── RWLock.h
│ │ ├── RefBase.h
│ │ ├── SharedBuffer.h
│ │ ├── Singleton.h
│ │ ├── SortedVector.h
│ │ ├── StopWatch.h
│ │ ├── String16.h
│ │ ├── String8.h
│ │ ├── StrongPointer.h
│ │ ├── SystemClock.h
│ │ ├── Thread.h
│ │ ├── ThreadDefs.h
│ │ ├── Timers.h
│ │ ├── Tokenizer.h
│ │ ├── Trace.h
│ │ ├── TypeHelpers.h
│ │ ├── Unicode.h
│ │ ├── Vector.h
│ │ ├── VectorImpl.h
│ │ ├── ashmem.h
│ │ ├── misc.h
│ │ └── threads.h
│ ├── bzip2/
│ │ ├── LICENSE
│ │ ├── build.txt
│ │ └── bzlib.h
│ ├── json11/
│ │ ├── json11.cpp
│ │ └── json11.hpp
│ ├── kaitai/
│ │ ├── custom_decoder.h
│ │ ├── exceptions.h
│ │ ├── kaitaistream.cpp
│ │ ├── kaitaistream.h
│ │ └── kaitaistruct.h
│ ├── libgralloc/
│ │ └── include/
│ │ └── gralloc_priv.h
│ ├── libyuv/
│ │ └── include/
│ │ ├── libyuv/
│ │ │ ├── basic_types.h
│ │ │ ├── compare.h
│ │ │ ├── compare_row.h
│ │ │ ├── convert.h
│ │ │ ├── convert_argb.h
│ │ │ ├── convert_from.h
│ │ │ ├── convert_from_argb.h
│ │ │ ├── cpu_id.h
│ │ │ ├── macros_msa.h
│ │ │ ├── mjpeg_decoder.h
│ │ │ ├── planar_functions.h
│ │ │ ├── rotate.h
│ │ │ ├── rotate_argb.h
│ │ │ ├── rotate_row.h
│ │ │ ├── row.h
│ │ │ ├── scale.h
│ │ │ ├── scale_argb.h
│ │ │ ├── scale_row.h
│ │ │ ├── version.h
│ │ │ └── video_common.h
│ │ └── libyuv.h
│ ├── linux/
│ │ └── include/
│ │ ├── linux/
│ │ │ └── ion.h
│ │ └── msm_ion.h
│ ├── mapbox-gl-native-qt/
│ │ └── include/
│ │ ├── QMapbox
│ │ ├── QMapboxGL
│ │ ├── qmapbox.hpp
│ │ └── qmapboxgl.hpp
│ ├── nanovg/
│ │ ├── fontstash.h
│ │ ├── nanovg.c
│ │ ├── nanovg.h
│ │ ├── nanovg_gl.h
│ │ ├── nanovg_gl_utils.h
│ │ ├── stb_image.h
│ │ └── stb_truetype.h
│ ├── opencl/
│ │ └── include/
│ │ └── CL/
│ │ ├── cl.h
│ │ ├── cl_d3d10.h
│ │ ├── cl_d3d11.h
│ │ ├── cl_dx9_media_sharing.h
│ │ ├── cl_egl.h
│ │ ├── cl_ext.h
│ │ ├── cl_ext_qcom.h
│ │ ├── cl_gl.h
│ │ ├── cl_gl_ext.h
│ │ ├── cl_platform.h
│ │ └── opencl.h
│ ├── openmax/
│ │ └── include/
│ │ ├── OMX_Audio.h
│ │ ├── OMX_Component.h
│ │ ├── OMX_ContentPipe.h
│ │ ├── OMX_Core.h
│ │ ├── OMX_CoreExt.h
│ │ ├── OMX_IVCommon.h
│ │ ├── OMX_Image.h
│ │ ├── OMX_Index.h
│ │ ├── OMX_IndexExt.h
│ │ ├── OMX_Other.h
│ │ ├── OMX_QCOMExtns.h
│ │ ├── OMX_Skype_VideoExtensions.h
│ │ ├── OMX_Types.h
│ │ ├── OMX_Video.h
│ │ └── OMX_VideoExt.h
│ ├── qpoases/
│ │ ├── EXAMPLES/
│ │ │ ├── example1.cpp
│ │ │ └── example1b.cpp
│ │ ├── INCLUDE/
│ │ │ ├── Bounds.hpp
│ │ │ ├── Constants.hpp
│ │ │ ├── Constraints.hpp
│ │ │ ├── CyclingManager.hpp
│ │ │ ├── EXTRAS/
│ │ │ │ └── SolutionAnalysis.hpp
│ │ │ ├── Indexlist.hpp
│ │ │ ├── MessageHandling.hpp
│ │ │ ├── QProblem.hpp
│ │ │ ├── QProblemB.hpp
│ │ │ ├── SubjectTo.hpp
│ │ │ ├── Types.hpp
│ │ │ └── Utils.hpp
│ │ ├── LICENSE.txt
│ │ ├── README.txt
│ │ ├── SConscript
│ │ ├── SRC/
│ │ │ ├── Bounds.cpp
│ │ │ ├── Bounds.ipp
│ │ │ ├── Constraints.cpp
│ │ │ ├── Constraints.ipp
│ │ │ ├── CyclingManager.cpp
│ │ │ ├── CyclingManager.ipp
│ │ │ ├── EXTRAS/
│ │ │ │ └── SolutionAnalysis.cpp
│ │ │ ├── Indexlist.cpp
│ │ │ ├── Indexlist.ipp
│ │ │ ├── MessageHandling.cpp
│ │ │ ├── MessageHandling.ipp
│ │ │ ├── QProblem.cpp
│ │ │ ├── QProblem.ipp
│ │ │ ├── QProblemB.cpp
│ │ │ ├── QProblemB.ipp
│ │ │ ├── SubjectTo.cpp
│ │ │ ├── SubjectTo.ipp
│ │ │ ├── Utils.cpp
│ │ │ └── Utils.ipp
│ │ └── VERSIONS.txt
│ ├── qrcode/
│ │ ├── QrCode.cc
│ │ └── QrCode.hpp
│ ├── snpe/
│ │ └── include/
│ │ ├── DiagLog/
│ │ │ ├── IDiagLog.hpp
│ │ │ └── Options.hpp
│ │ ├── DlContainer/
│ │ │ └── IDlContainer.hpp
│ │ ├── DlSystem/
│ │ │ ├── DlEnums.hpp
│ │ │ ├── DlError.hpp
│ │ │ ├── DlOptional.hpp
│ │ │ ├── DlVersion.hpp
│ │ │ ├── IBufferAttributes.hpp
│ │ │ ├── ITensor.hpp
│ │ │ ├── ITensorFactory.hpp
│ │ │ ├── ITensorItr.hpp
│ │ │ ├── ITensorItrImpl.hpp
│ │ │ ├── IUDL.hpp
│ │ │ ├── IUserBuffer.hpp
│ │ │ ├── IUserBufferFactory.hpp
│ │ │ ├── PlatformConfig.hpp
│ │ │ ├── RuntimeList.hpp
│ │ │ ├── String.hpp
│ │ │ ├── StringList.hpp
│ │ │ ├── TensorMap.hpp
│ │ │ ├── TensorShape.hpp
│ │ │ ├── TensorShapeMap.hpp
│ │ │ ├── UDLContext.hpp
│ │ │ ├── UDLFunc.hpp
│ │ │ ├── UserBufferMap.hpp
│ │ │ └── ZdlExportDefine.hpp
│ │ ├── PlatformValidator/
│ │ │ └── PlatformValidator.hpp
│ │ ├── SNPE/
│ │ │ ├── ApplicationBufferMap.hpp
│ │ │ ├── PSNPE.hpp
│ │ │ ├── RuntimeConfigList.hpp
│ │ │ ├── SNPE.hpp
│ │ │ ├── SNPEBuilder.hpp
│ │ │ ├── SNPEFactory.hpp
│ │ │ └── UserBufferList.hpp
│ │ └── SnpeUdo/
│ │ ├── UdoBase.h
│ │ ├── UdoImpl.h
│ │ ├── UdoImplCpu.h
│ │ ├── UdoImplDsp.h
│ │ ├── UdoImplGpu.h
│ │ ├── UdoReg.h
│ │ └── UdoShared.h
│ └── zlib/
│ └── build.txt
├── pyextra/
│ └── .gitignore
├── rednose/
│ ├── SConscript
│ ├── helpers/
│ │ ├── __init__.py
│ │ ├── chi2_lookup.py
│ │ ├── chi2_lookup_table.npy
│ │ ├── common_ekf.cc
│ │ ├── common_ekf.h
│ │ ├── ekf_sym.cc
│ │ ├── ekf_sym.h
│ │ ├── ekf_sym.py
│ │ ├── ekf_sym_pyx.pyx
│ │ ├── feature_handler.py
│ │ ├── kalmanfilter.py
│ │ ├── lst_sq_computer.py
│ │ └── sympy_helpers.py
│ └── templates/
│ ├── compute_pos.c
│ ├── ekf_c.c
│ └── feature_handler.c
├── release/
│ ├── build_devel.sh
│ ├── build_release2.sh
│ ├── build_release3.sh
│ ├── check-submodules.sh
│ ├── files_common
│ ├── files_pc
│ ├── files_tici
│ └── identity.sh
├── scripts/
│ ├── complete_setup.sh
│ ├── installers/
│ │ ├── font_installer.py
│ │ ├── language_installer.py
│ │ └── sshkey_installer.py
│ ├── oneplus_update_neos.sh
│ ├── rebuild.sh
│ ├── reset_dp.sh
│ ├── reset_update.sh
│ ├── reset_usb.py
│ ├── ssh_key/
│ │ ├── id_rsa
│ │ └── setup_keys
│ ├── stop_updater.sh
│ ├── update_now.sh
│ ├── update_panda_firmware.sh
│ └── vw.sh
├── selfdrive/
│ ├── __init__.py
│ ├── assets/
│ │ ├── .gitignore
│ │ ├── assets.qrc
│ │ ├── fonts/
│ │ │ ├── NotoSansCJKtc-Bold.otf
│ │ │ ├── NotoSansCJKtc-Medium.otf
│ │ │ ├── NotoSansCJKtc-Regular.otf
│ │ │ └── fonts.xml
│ │ ├── locales/
│ │ │ ├── events.pot
│ │ │ ├── ja-JP/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── events.mo
│ │ │ │ └── events.po
│ │ │ ├── ko-KR/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── events.mo
│ │ │ │ └── events.po
│ │ │ ├── zh-CN/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── events.mo
│ │ │ │ └── events.po
│ │ │ └── zh-TW/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── events.mo
│ │ │ └── events.po
│ │ └── offroad/
│ │ ├── fcc.html
│ │ └── tc.html
│ ├── athena/
│ │ ├── __init__.py
│ │ ├── athenad.py
│ │ ├── manage_athenad.py
│ │ └── registration.py
│ ├── camerad/
│ │ ├── SConscript
│ │ ├── cameras/
│ │ │ ├── camera_common.cc
│ │ │ ├── camera_common.h
│ │ │ ├── camera_frame_stream.cc
│ │ │ ├── camera_frame_stream.h
│ │ │ ├── camera_mipi.cc
│ │ │ ├── camera_mipi.h
│ │ │ ├── camera_qcom.cc
│ │ │ ├── camera_qcom.h
│ │ │ ├── camera_qcom2.cc
│ │ │ ├── camera_qcom2.h
│ │ │ ├── debayer.cl
│ │ │ ├── real_debayer.cl
│ │ │ ├── sensor2_i2c.h
│ │ │ └── sensor_i2c.h
│ │ ├── imgproc/
│ │ │ ├── conv.cl
│ │ │ ├── pool.cl
│ │ │ ├── utils.cc
│ │ │ └── utils.h
│ │ ├── include/
│ │ │ ├── media/
│ │ │ │ ├── cam_cpas.h
│ │ │ │ ├── cam_defs.h
│ │ │ │ ├── cam_fd.h
│ │ │ │ ├── cam_icp.h
│ │ │ │ ├── cam_isp.h
│ │ │ │ ├── cam_isp_ife.h
│ │ │ │ ├── cam_isp_vfe.h
│ │ │ │ ├── cam_jpeg.h
│ │ │ │ ├── cam_lrme.h
│ │ │ │ ├── cam_req_mgr.h
│ │ │ │ ├── cam_sensor.h
│ │ │ │ ├── cam_sensor_cmn_header.h
│ │ │ │ └── cam_sync.h
│ │ │ ├── msm_cam_sensor.h
│ │ │ ├── msm_camsensor_sdk.h
│ │ │ ├── msmb_camera.h
│ │ │ ├── msmb_isp.h
│ │ │ └── msmb_ispif.h
│ │ ├── main.cc
│ │ ├── snapshot/
│ │ │ ├── __init__.py
│ │ │ └── snapshot.py
│ │ └── transforms/
│ │ ├── rgb_to_yuv.cc
│ │ ├── rgb_to_yuv.cl
│ │ ├── rgb_to_yuv.h
│ │ └── rgb_to_yuv_test.cc
│ ├── car/
│ │ ├── __init__.py
│ │ ├── car_helpers.py
│ │ ├── chrysler/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── chryslercan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── fingerprints.py
│ │ ├── ford/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── fordcan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── fw_versions.py
│ │ ├── gm/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── gmcan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── honda/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── hondacan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── hyundai/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── hyundaican.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── interfaces.py
│ │ ├── isotp_parallel_query.py
│ │ ├── mazda/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── mazdacan.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── mock/
│ │ │ ├── __init__.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── nissan/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── nissancan.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── subaru/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ ├── subarucan.py
│ │ │ └── values.py
│ │ ├── tesla/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ ├── teslacan.py
│ │ │ └── values.py
│ │ ├── tests/
│ │ │ ├── __init__.py
│ │ │ └── test_car_interfaces.py
│ │ ├── toyota/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ ├── toyotacan.py
│ │ │ └── values.py
│ │ ├── vin.py
│ │ └── volkswagen/
│ │ ├── __init__.py
│ │ ├── carcontroller.py
│ │ ├── carstate.py
│ │ ├── interface.py
│ │ ├── radar_interface.py
│ │ ├── values.py
│ │ └── volkswagencan.py
│ ├── common/
│ │ ├── SConscript
│ │ ├── clutil.cc
│ │ ├── clutil.h
│ │ ├── framebuffer.cc
│ │ ├── framebuffer.h
│ │ ├── glutil.cc
│ │ ├── glutil.h
│ │ ├── gpio.cc
│ │ ├── gpio.h
│ │ ├── i2c.cc
│ │ ├── i2c.h
│ │ ├── mat.h
│ │ ├── modeldata.h
│ │ ├── params.cc
│ │ ├── params.h
│ │ ├── queue.h
│ │ ├── swaglog.cc
│ │ ├── swaglog.h
│ │ ├── timing.h
│ │ ├── touch.c
│ │ ├── touch.h
│ │ ├── util.cc
│ │ ├── util.h
│ │ ├── version.h
│ │ ├── visionimg.cc
│ │ ├── visionimg.h
│ │ ├── watchdog.cc
│ │ └── watchdog.h
│ ├── config.py
│ ├── controls/
│ │ ├── __init__.py
│ │ ├── controlsd.py
│ │ ├── lib/
│ │ │ ├── __init__.py
│ │ │ ├── alertmanager.py
│ │ │ ├── alerts_offroad.json
│ │ │ ├── cluster/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── fastcluster.cpp
│ │ │ │ ├── fastcluster.h
│ │ │ │ ├── fastcluster_R_dm.cpp
│ │ │ │ ├── fastcluster_dm.cpp
│ │ │ │ ├── fastcluster_py.py
│ │ │ │ └── test.cpp
│ │ │ ├── drive_helpers.py
│ │ │ ├── events.py
│ │ │ ├── fcw.py
│ │ │ ├── lane_planner.py
│ │ │ ├── latcontrol_angle.py
│ │ │ ├── latcontrol_indi.py
│ │ │ ├── latcontrol_lqr.py
│ │ │ ├── latcontrol_pid.py
│ │ │ ├── lateral_mpc/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── lateral_mpc.c
│ │ │ │ ├── lib_mpc_export/
│ │ │ │ │ ├── acado_auxiliary_functions.c
│ │ │ │ │ ├── acado_auxiliary_functions.h
│ │ │ │ │ ├── acado_common.h
│ │ │ │ │ ├── acado_integrator.c
│ │ │ │ │ ├── acado_qpoases_interface.cpp
│ │ │ │ │ ├── acado_qpoases_interface.hpp
│ │ │ │ │ └── acado_solver.c
│ │ │ │ └── libmpc_py.py
│ │ │ ├── lateral_planner.py
│ │ │ ├── lead_mpc.py
│ │ │ ├── lead_mpc_lib/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── lib_mpc_export/
│ │ │ │ │ ├── acado_auxiliary_functions.c
│ │ │ │ │ ├── acado_auxiliary_functions.h
│ │ │ │ │ ├── acado_common.h
│ │ │ │ │ ├── acado_integrator.c
│ │ │ │ │ ├── acado_qpoases_interface.cpp
│ │ │ │ │ ├── acado_qpoases_interface.hpp
│ │ │ │ │ └── acado_solver.c
│ │ │ │ ├── libmpc_py.py
│ │ │ │ └── longitudinal_mpc.c
│ │ │ ├── limits_long_mpc.py
│ │ │ ├── long_mpc.py
│ │ │ ├── longcontrol.py
│ │ │ ├── longitudinal_mpc_lib/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── lib_mpc_export/
│ │ │ │ │ ├── acado_auxiliary_functions.c
│ │ │ │ │ ├── acado_auxiliary_functions.h
│ │ │ │ │ ├── acado_common.h
│ │ │ │ │ ├── acado_integrator.c
│ │ │ │ │ ├── acado_qpoases_interface.cpp
│ │ │ │ │ ├── acado_qpoases_interface.hpp
│ │ │ │ │ └── acado_solver.c
│ │ │ │ ├── libmpc_py.py
│ │ │ │ └── longitudinal_mpc.c
│ │ │ ├── longitudinal_planner.py
│ │ │ ├── pid.py
│ │ │ ├── radar_helpers.py
│ │ │ ├── speed_limit_controller.py
│ │ │ ├── turn_speed_controller.py
│ │ │ ├── vehicle_model.py
│ │ │ └── vision_turn_controller.py
│ │ ├── plannerd.py
│ │ └── radard.py
│ ├── crash.py
│ ├── debug/
│ │ ├── __init__.py
│ │ ├── can_print_changes.py
│ │ ├── can_printer.py
│ │ ├── check_freq.py
│ │ ├── check_lag.py
│ │ ├── check_timings.py
│ │ ├── compare_fingerprints.py
│ │ ├── count_events.py
│ │ ├── cpu_usage_stat.py
│ │ ├── cycle_alerts.py
│ │ ├── disable_ecu.py
│ │ ├── dump.py
│ │ ├── filter_log_message.py
│ │ ├── fingerprint_from_route.py
│ │ ├── get_fingerprint.py
│ │ ├── live_cpu_and_temp.py
│ │ ├── run_process_on_route.py
│ │ ├── set_car_params.py
│ │ ├── show_matching_cars.py
│ │ ├── test_fw_query_on_routes.py
│ │ ├── toyota_eps_factor.py
│ │ └── uiview.py
│ ├── dragonpilot/
│ │ ├── HOWTO-APPD.md
│ │ ├── LICENSE.md
│ │ ├── appd.py
│ │ ├── appd_example.json
│ │ ├── dashcamd.py
│ │ ├── fonts.xml
│ │ ├── gpx_uploader.py
│ │ ├── gpxd.py
│ │ ├── otisserv.py
│ │ ├── systemd.py
│ │ └── tpl/
│ │ ├── addr_input.tpl
│ │ ├── app_token_input.tpl
│ │ ├── body.tpl
│ │ ├── gmap_index.html.tpl
│ │ ├── gmap_index.js.tpl
│ │ ├── gmap_key_input.tpl
│ │ ├── gmap_style.css.tpl
│ │ ├── nav_confirmation.tpl
│ │ └── public_token_input.tpl
│ ├── hardware/
│ │ ├── __init__.py
│ │ ├── base.h
│ │ ├── base.py
│ │ ├── eon/
│ │ │ ├── __init__.py
│ │ │ ├── androidd.py
│ │ │ ├── hardware.h
│ │ │ └── hardware.py
│ │ ├── hw.h
│ │ ├── jetson/
│ │ │ ├── __init__.py
│ │ │ ├── hardware.h
│ │ │ └── hardware.py
│ │ ├── pc/
│ │ │ ├── __init__.py
│ │ │ └── hardware.py
│ │ └── tici/
│ │ ├── __init__.py
│ │ ├── agnos.json
│ │ ├── agnos.py
│ │ ├── amplifier.py
│ │ ├── hardware.h
│ │ ├── hardware.py
│ │ ├── iwlist.py
│ │ ├── pins.py
│ │ └── updater
│ ├── logcatd/
│ │ ├── SConscript
│ │ ├── logcatd_android.cc
│ │ └── logcatd_systemd.cc
│ ├── loggerd/
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── bootlog.cc
│ │ ├── config.py
│ │ ├── deleter.py
│ │ ├── encoder.h
│ │ ├── include/
│ │ │ └── msm_media_info.h
│ │ ├── logger.cc
│ │ ├── logger.h
│ │ ├── loggerd.cc
│ │ ├── omx_encoder.cc
│ │ ├── omx_encoder.h
│ │ ├── raw_logger.cc
│ │ ├── raw_logger.h
│ │ ├── uploader.py
│ │ └── xattr_cache.py
│ ├── logmessaged.py
│ ├── manager/
│ │ ├── __init__.py
│ │ ├── build.py
│ │ ├── custom_dep.py
│ │ ├── helpers.py
│ │ ├── manager.py
│ │ ├── process.py
│ │ ├── process_config.py
│ │ └── test/
│ │ ├── __init__.py
│ │ └── test_manager.py
│ ├── manager.py
│ ├── mapd/
│ │ ├── README.md
│ │ ├── config.py
│ │ ├── lib/
│ │ │ ├── NodesData.py
│ │ │ ├── Route.py
│ │ │ ├── WayCollection.py
│ │ │ ├── WayRelation.py
│ │ │ ├── WayRelationIndex.py
│ │ │ ├── default_speeds.json
│ │ │ ├── geo.py
│ │ │ └── osm.py
│ │ ├── mapd.py
│ │ └── test/
│ │ ├── __init__.py
│ │ ├── mock_data.py
│ │ ├── mock_osm_response_01.xml
│ │ ├── mock_osm_response_02.xml
│ │ ├── test_NodesData.py
│ │ ├── test_WayRelation.py
│ │ └── test_geo.py
│ ├── modeld/
│ │ ├── SConscript
│ │ ├── constants.py
│ │ ├── dmonitoringmodeld
│ │ ├── dmonitoringmodeld.cc
│ │ ├── modeld
│ │ ├── modeld.cc
│ │ ├── models/
│ │ │ ├── commonmodel.cc
│ │ │ ├── commonmodel.h
│ │ │ ├── dmonitoring.cc
│ │ │ ├── dmonitoring.h
│ │ │ ├── driving.cc
│ │ │ └── driving.h
│ │ ├── runners/
│ │ │ ├── onnx_runner.py
│ │ │ ├── onnxmodel.cc
│ │ │ ├── onnxmodel.h
│ │ │ ├── run.h
│ │ │ ├── runmodel.h
│ │ │ ├── snpemodel.cc
│ │ │ ├── snpemodel.h
│ │ │ ├── thneedmodel.cc
│ │ │ └── thneedmodel.h
│ │ ├── thneed/
│ │ │ ├── compile.cc
│ │ │ ├── include/
│ │ │ │ └── msm_kgsl.h
│ │ │ ├── serialize.cc
│ │ │ ├── thneed.cc
│ │ │ └── thneed.h
│ │ └── transforms/
│ │ ├── loadyuv.cc
│ │ ├── loadyuv.cl
│ │ ├── loadyuv.h
│ │ ├── transform.cc
│ │ ├── transform.cl
│ │ └── transform.h
│ ├── monitoring/
│ │ ├── dmonitoringd.py
│ │ └── driver_monitor.py
│ ├── pandad.py
│ ├── proclogd/
│ │ ├── SConscript
│ │ ├── main.cc
│ │ ├── proclog.cc
│ │ └── proclog.h
│ ├── rtshield.py
│ ├── sensord/
│ │ ├── SConscript
│ │ ├── libdiag.h
│ │ ├── sensord
│ │ ├── sensors/
│ │ │ ├── bmx055_accel.cc
│ │ │ ├── bmx055_accel.h
│ │ │ ├── bmx055_gyro.cc
│ │ │ ├── bmx055_gyro.h
│ │ │ ├── bmx055_magn.cc
│ │ │ ├── bmx055_magn.h
│ │ │ ├── bmx055_temp.cc
│ │ │ ├── bmx055_temp.h
│ │ │ ├── constants.h
│ │ │ ├── file_sensor.cc
│ │ │ ├── file_sensor.h
│ │ │ ├── i2c_sensor.cc
│ │ │ ├── i2c_sensor.h
│ │ │ ├── light_sensor.cc
│ │ │ ├── light_sensor.h
│ │ │ ├── lsm6ds3_accel.cc
│ │ │ ├── lsm6ds3_accel.h
│ │ │ ├── lsm6ds3_gyro.cc
│ │ │ ├── lsm6ds3_gyro.h
│ │ │ ├── lsm6ds3_temp.cc
│ │ │ ├── lsm6ds3_temp.h
│ │ │ ├── mmc5603nj_magn.cc
│ │ │ ├── mmc5603nj_magn.h
│ │ │ └── sensor.h
│ │ ├── sensors_qcom.cc
│ │ └── sensors_qcom2.cc
│ ├── swaglog.py
│ ├── test/
│ │ ├── __init__.py
│ │ ├── helpers.py
│ │ ├── setup_device_ci.sh
│ │ ├── test_fingerprints.py
│ │ └── test_onroad.py
│ ├── thermald/
│ │ ├── power_monitoring.py
│ │ └── thermald.py
│ ├── timezoned.py
│ ├── tombstoned.py
│ ├── ui/
│ │ ├── .gitignore
│ │ ├── SConscript
│ │ ├── _ui
│ │ ├── _ui_dp
│ │ ├── main.cc
│ │ ├── paint.cc
│ │ ├── paint.h
│ │ ├── qt/
│ │ │ ├── api.cc
│ │ │ ├── api.h
│ │ │ ├── home.cc
│ │ │ ├── home.h
│ │ │ ├── maps/
│ │ │ │ ├── map.cc
│ │ │ │ ├── map.h
│ │ │ │ ├── map_helpers.cc
│ │ │ │ ├── map_helpers.h
│ │ │ │ ├── map_settings.cc
│ │ │ │ └── map_settings.h
│ │ │ ├── offroad/
│ │ │ │ ├── driverview.cc
│ │ │ │ ├── driverview.h
│ │ │ │ ├── networking.cc
│ │ │ │ ├── networking.h
│ │ │ │ ├── networkmanager.h
│ │ │ │ ├── onboarding.cc
│ │ │ │ ├── onboarding.h
│ │ │ │ ├── settings.cc
│ │ │ │ ├── settings.h
│ │ │ │ ├── text_view.qml
│ │ │ │ ├── wifiManager.cc
│ │ │ │ └── wifiManager.h
│ │ │ ├── onroad.cc
│ │ │ ├── onroad.h
│ │ │ ├── qt_window.h
│ │ │ ├── request_repeater.cc
│ │ │ ├── request_repeater.h
│ │ │ ├── sidebar.cc
│ │ │ ├── sidebar.h
│ │ │ ├── spinner
│ │ │ ├── spinner.cc
│ │ │ ├── spinner.h
│ │ │ ├── spinner_aarch64
│ │ │ ├── spinner_larch64
│ │ │ ├── text
│ │ │ ├── text.cc
│ │ │ ├── text_aarch64
│ │ │ ├── text_larch64
│ │ │ ├── util.cc
│ │ │ ├── util.h
│ │ │ ├── widgets/
│ │ │ │ ├── cameraview.cc
│ │ │ │ ├── cameraview.h
│ │ │ │ ├── controls.cc
│ │ │ │ ├── controls.h
│ │ │ │ ├── drive_stats.cc
│ │ │ │ ├── drive_stats.h
│ │ │ │ ├── input.cc
│ │ │ │ ├── input.h
│ │ │ │ ├── keyboard.cc
│ │ │ │ ├── keyboard.h
│ │ │ │ ├── offroad_alerts.cc
│ │ │ │ ├── offroad_alerts.h
│ │ │ │ ├── prime.cc
│ │ │ │ ├── prime.h
│ │ │ │ ├── scrollview.cc
│ │ │ │ ├── scrollview.h
│ │ │ │ ├── ssh_keys.cc
│ │ │ │ ├── ssh_keys.h
│ │ │ │ ├── toggle.cc
│ │ │ │ └── toggle.h
│ │ │ ├── window.cc
│ │ │ └── window.h
│ │ ├── soundd
│ │ ├── soundd.cc
│ │ ├── spinner
│ │ ├── text
│ │ ├── translations/
│ │ │ ├── en-US.qm
│ │ │ ├── en-US.ts
│ │ │ ├── zh-CN.qm
│ │ │ ├── zh-CN.ts
│ │ │ ├── zh-TW.qm
│ │ │ └── zh-TW.ts
│ │ ├── ui
│ │ ├── ui.cc
│ │ ├── ui.h
│ │ ├── ui.pro
│ │ └── update_translations.sh
│ ├── updated.py
│ └── version.py
├── site_scons/
│ └── site_tools/
│ └── cython.py
└── tools/
└── openpilot_env.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
venv/
.clang-format
.DS_Store
.tags
.ipynb_checkpoints
.idea
.overlay_init
.overlay_consistent
.sconsign.dblite
.vscode*
model2.png
a.out
.hypothesis
*.dylib
*.DSYM
*.d
*.pyc
*.pyo
.*.swp
.*.swo
.*.un~
*.tmp
*.o
*.o-*
*.os
*.os-*
*.so
*.a
*.clb
*.class
*.pyxbldc
*.vcd
config.json
clcache
compile_commands.json
persist
board/obj/
selfdrive/boardd/boardd
selfdrive/logcatd/logcatd
selfdrive/mapd/default_speeds_by_region.json
selfdrive/proclogd/proclogd
selfdrive/test/longitudinal_maneuvers/out
selfdrive/visiond/visiond
selfdrive/loggerd/loggerd
selfdrive/loggerd/bootlog
selfdrive/sensord/_gpsd
selfdrive/sensord/_sensord
selfdrive/camerad/camerad
selfdrive/camerad/test/ae_gray_test
selfdrive/modeld/_modeld
selfdrive/modeld/_dmonitoringmodeld
/src/
one
openpilot
notebooks
xx
hyperthneed
panda_jungle
provisioning
.coverage*
coverage.xml
htmlcov
pandaextra
.mypy_cache/
flycheck_*
cppcheck_report.txt
comma*.sh
selfdrive/modeld/thneed/compile
models/*.thneed
*.bz2
!phonelibs/mapbox-gl-native-qt/aarch64/*.so
!phonelibs/mapbox-gl-native-qt/jarch64/*.so
================================================
FILE: CHANGELOGS-DEV.md
================================================
dragonpilot 0.8.9-3
========================
* Bug fixes.
* Fixed up auto updater.
* Fixed Honda Jade dbc. (Thanks to @lijunhao731)
* ADDED: 0.8.10 model.
* ADDED: Nav for all device.
* ADDED: Support for Nvidia Xavier.
dragonpilot 0.8.9-2
========================
* Bug fixes.
* Refactor UI related changes.
* Updated Simplified Chinese translation. (Thanks to @CCZ)
* WARNING: Due to recent OP change, Device w/ battery recommended setting autoshutdown to 1 min to prevent libusb error.
* Re-tuned acceleraton profile. (Thank to @wer5lcy)
* ADDED: Car port for Toyota Prius Alpha. (Thanks to @CT921)
dragonpilot 0.8.9-1
========================
* Based on openpilot 0.8.8 devel.
* Re-introduce Follow Distance 4th profile (2.2s / 1.8s / 1.5s / 1.2s).
* ADDED: New softer sound for c3.
* ADDED: Dynamic Lane Profile. (Thanks to @sunnyhaibin)
* Bug Fixes.
dragonpilot 0.8.8-2
========================
* ADDED: newer faster and modularized mapd and slow down for curve. (Thanks to @move-fast)
* ADDED: Street name on the bottom bar.
* ADDED: Now supports 1+3t / C2 / C3 / Jetson Xavier NX.
* ADDED: Smoother tune for PRIUS_TSS2.
* Bug fixes.
dragonpilot 0.8.8-1
========================
** BETA TESTING ONLY **
* Based on openpilot 0.8.8 devel.
* FIXED: dashcam issue.
* FIXED: some VW vehicles issue. (Thanks to @yayism)
* FIXED: white panda + j533 acc issue. (Thanks to @lirudy)
* ADDED: Auto fake black panda.
* ADDED: 2018 chinese camry hybrid fingerprint (Thanks to @stingshen)
* WIP: mapd.
dragonpilot 0.8.7-4
========================
* 2017 JADE w/ Added Comma Pedal Support. (Thanks to @lijunhao731)
* Fixed toyota / honda brake light display. (Thanks to @loveloveses)
* Fixed UI toggle. (Thanks to @鄧育林、@謝聖鴻)
* Fixed VW resume/display issue. (Thanks to @SKY)
* Fixed CJK font installation issue.
dragonpilot 0.8.7-3
========================
* Bug fixes.
* Fixed gpxd.
* Added some Chinese support.
dragonpilot 0.8.7-2
========================
* Fixed sound issue.
* Changed gpx logs to OSM compatible format.
* HONDA: Added BSM support for CRV-Hybrid.
* HONDA: Added toggle to force displaying km/h in HUD.
* TOYOTA: Add new Toggles under DP - Cars to enable/disable Following Modes / Accel Modes with physical button feature.
dragonpilot 0.8.7-1
========================
* Based on openpilot 0.8.7 devel.
* Support 1+3t / C2 / Jetson Xavier NX.
* Support White / Grey Panda.
* TOYOTA: Can now change Following Modes with physical button from the steering wheel.
* TOYOTA: Can now change Acceleration Modes with physical button if your car supports it.
* TOYOTA: Added Low speed override toggles.
* Dev UI now displays RPM reading.
* Added Prebuilt toggle for faster boot.
* Lexus RX high RPM fix. (Thanks to @crazysim).
* Added toggle to launch Language settings.
* Added toggle to launch Volume settings.
* Added toggle to launch date/time settings.
* Added toggle to flash panda.
* Added toggle to recover panda firmware.
* Added toggle to delete logging (/sdcard/realdata).
* Added GPS Logger.
dragonpilot 0.8.6-1
========================
* Based on openpilot 0.8.6 devel.
* Support 1+3t / C2 / Jetson Xavier NX.
* Support White / Grey Panda.
dragonpilot 0.8.5-4
========================
* Added multiple toggles.
* Code clean up.
* Android app support. (see selfdrive/dragonpilot/HOWTO-APPD.md)
* Better support for VW MPQ (Thanks to @Saber)
dragonpilot 0.8.5-3
========================
* Added Jetson support toggle.
* Added Steering Ratio controller.
* Reduce Following Profile to 3 modes only. (1.8s / 1.5s / 1.2s)
* Bug fixes.
dragonpilot 0.8.5-2
========================
* Added black panda simulation toggle.
* Added No GPS toggle.
* Added No Battery Toggle.
* Bug fixes.
dragonpilot 0.8.5-1
========================
* Based on openpilot 0.8.5 devel.
* 基於 openpilot 0.8.5 devel.
* Support 1+3t / C2 / Jetson Xavier NX.
* 支持 1+3t / C2 / Jetson Xavier NX.
* No White/Grey Panda Support.
* 不支持白灰熊.
dragonpilot 0.8.4-3
========================
* 簡化 1+3t 安裝方法. (請查閱 HOWTO-ONEPLUS.md)
* Simplied 1+3t installation. (See HOWTO-ONEPLUS.md)
* 加回舊 ssh 登錄.
* Good old ssh key.
* 修復本田錯誤. (感謝 @loveloveses)
* Fixed Honda bug. (Thanks to @loveloveses)
dragonpilot 0.8.4-2
========================
* 加回可調整加速/跟車設定.
* Added back Accel/Following Profile.
* 支持 Headless Jetson Xavier NX (https://github.com/efinilan/xnxpilot.git)
* Support Headless Jetson Xavier NX (https://github.com/efinilan/xnxpilot.git)
* 支持 1+3t (需額外安裝手續)
* Support 1+3t (Require additional install procedure)
* 支持白/灰熊
* Support White/Grey Panda.
dragonpilot 0.8.4-1
========================
* 基於 openpilot 0.8.4 devel.
* Based on openpilot 0.8.4 devel.
dragonpilot 0.8.1
========================
* 基於最新 openpilot 0.8.1 devel.
* Based on latest openpilot 0.8.1 devel.
* 加入行車記錄按鈕。(感謝 @toyboxZ 提供)
* Added REC screen button. (Thanks to @toyboxZ)
dragonpilot 0.8.0
========================
* 基於最新 openpilot 0.8.0 devel.
* Based on latest openpilot 0.8.0 devel.
* 加入 git 錯誤修正。(感謝 @toyboxZ 提供)
* Added git error fix. (Thanks to @toyboxZ)
dragonpilot 0.7.10.1
========================
* HYUNDAI_GENESIS 使用 INDI 控制器。(感謝 @donfyffe 提供)
* HYUNDAI_GENESIS uses INDI controller. (Thanks to @donfyffe)
* HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議)
* HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe)
* 支援台灣版 2018 Huyndai IONIQ + smart MDPS (dp_hkg_smart_mdps) (感謝 @andy741217 提供)
* Support 2018 Taiwan Hyundai IONIQ + smart MDPS (dp_hkg_smart_mdps) (Thanks to @andy741217)
* 使用 openpilot v0.8 的模型。(感謝 @eisenheim)
* Use openpilot v0.8 model. (Thanks to @eisenheim)
* 加入 0.8 測試版的部分優化。
* Added optimizations from pre-0.8.
* 加入 dp_honda_eps_mod 設定來使用更高的扭力 (需 eps mod)。(感謝 @Wuxl_369 提供)
* Added dp_honda_eps_mod setting to enable higher torque (eps mod required). (Thanks to @Wuxl_369)
* 修正 VW 對白/灰熊的支援 (感謝 @lirudy 提供)
* Fixed issue with white/grey panda support for VW (Thanks to @lirudy)
* GENESIS_G70 優化 (感謝 @sebastian4k 提供)
* GENESIS_G70 Optimisation (Thanks to @sebastian4k)
* HYUNDAI_GENESIS 優化 (感謝 @donfyffe 提供)
* HYUNDAI_GENESIS Optimisation (Thanks to @donfyffe)
* 加入 Dynamic gas Lite。(感謝 @toyboxZ 提供)
* Added Dynamic Gas Lite. (Thanks to @toyboxZ)
* 加入來自 afa 的 Honda inspire, accord, crv SnG 優化。(感謝 @menwenliang 提供)
* Added Honda inspire, accord, crv SnG optimisation from afa fork. (Thanks to @menwenliang)
* 加入 dp_toyota_lowest_cruise_override_vego。(感謝 @toyboxZ 提供)
* Added dp_toyota_lowest_cruise_override_vego. (Thanks to @toyboxZ)
dragonpilot 0.7.10.0
========================
* 基於最新 openpilot 0.7.10 devel.
* Based on latest openpilot 0.7.10 devel.
* 修正 Prius 特定情況下無法操控方向盤的問題。
* Fixed unable to regain Prius steering control under certain condition.
* 更新 VW MQB 的支援。(需執行 scripts/vw.sh 腳本)
* Updated support of VW MQB. (scripts/vw.sh script required)
* 新增 2018 China Toyota CHR 指紋v2。(感謝 @xiaohongcheung 提供)
* Added 2018 China Toyota CHR FPv2. (Thanks to @xiaohongcheung)
* 加入 Headunit Reloaded Android Auto App 支援。(感謝 @Ninjaa 提供)
* Added Headunit Reloaded Android Auto App Support. (Thanks to @Ninjaa)
* 優化 nanovg。(感謝 @piggy 提供)
* Optomized nanovg. (Thanks to @piggy)
* 加入 complete_setup.sh (感謝 @深鲸希西 提供)
* Added complete_setup.sh (Thanks to @深鲸希西)
* Based on latest openpilot 0.7.10 devel.
* 修正 EON 接 PC/USB 充電器時仍會自動關機的錯誤。(感謝 @小愛 回報)
* Fixed auto shutdown issue when EON connect to PC/USB Charger. (Thanks to @LOVEChen)
* HYUNDAI_GENESIS 使用 INDI 控制器。(感謝 @donfyffe 提供)
* HYUNDAI_GENESIS uses INDI controller. (Thanks to @donfyffe)
dragonpilot 0.7.8.3
========================
* VW 加入 6 分鐘時間方向盤控制限制輔助方案。(特別感謝 @actuallylemoncurd 提供代碼)
* VW added 6 minutes timebomb assist. (dp_timebomb_assist, special thanks to @actuallylemoncurd)
dragonpilot 0.7.8.2
========================
* 修正在沒網路的情況下,開機超過五分鐘的問題。
* Fixed 5+ minutes boot time issue when there is no internet connection.
* 錯誤回傳改使用 dp 的主機。
* Used dp server for error reporting.
* 更新服務改使用 gitee 的 IP 檢查連線狀態。
* updated service uses gitee IP address instead.
dragonpilot 0.7.8.1
========================
* 加入 ko-KR 翻譯。
* Added ko-KR translation.
* 加入 Honda Jade 支援。(感謝 @李俊灝)
* Added Honda Jade support. (Thanks to @lijunhao731)
* 修正 ui.cc 內存越界的問題。(感謝 @piggy 提供)
* Fixed ui.cc memory out of bound issue. (Thanks to @piggy)
* gpxd 記錄改自動存成 zip 格式。
* gpxd now store in zip format.
* 強制關閉 panda 檢查 DOS 硬體。
* Force disabled DOS hardware check in panda.
dragonpilot 0.7.8.0
========================
* 基於最新 openpilot 0.7.8 devel.
* Based on latest openpilot 0.7.8 devel.
* 加入重置 DP 設定按鈕。(感謝 @LOVEChen 建議)
* Added "Reset DP Settings" button. (Thanks to @LOVEChen)
* 將警示訊息更改為類似於概念 UI 的設計。
* Alert messages changed to concept UI alike design.
* 當 manager 出現錯誤後,按 Exit 按鈕會執行 reset_update 腳本。
* Added ability to execute reset_update.sh when press "Exit" button once manager returned errors.
dragonpilot 0.7.7.3
========================
* 修正方向盤監控。
* Fixed steering monitor timer param.
* 修正行駛時關閉畫面導致當機的錯誤。(感謝 @salmankhan, @stevej99, @bobbydough 回報)
* Fixed screen frozen issue when "screen off while driving" toggle is enabled. (Thanks to @salmankhan, @stevej99, @bobbydough)
* 加回 Dev Mini UI 開關。(感謝 @Ninjaa 建議)
* Re-added Dev Mini UI. (Thanks to @Ninjaa)
* 新增 (dp_reset_live_parameters_on_start) 每次發車重設 LiveParameters 值。(感謝 @eisenheim)
* Added ability (dp_reset_live_param_on_start) to reset LiveParameters on each start. (Thanks @eisenheim)
* 修正同時開啟 dp_toyota_zss 和 dp_lqr 產生的錯誤。(感謝 @bobbydough)
* Fixed error cuased by enabling both dp_toyota_zss and dp_lqr at the same time. (Thanks to @bobbydough)
* 新增 (dp_gpxd) 將 GPS 軌跡導出至 GPX 格式 (/sdcard/gpx_logs/)的功能。 (感謝 @mageymoo1)
* Added ability (dp_gpxd) to export GPS track into GPX files (/sdcard/gpx_logs/). (Thanks to @mageymoo1)
* 使用德國的車道寬度估算值。 (感謝 @arne182)
* Used lane width estimate value from Germany. (Thanks to @arne182)
dragonpilot 0.7.7.2
========================
* 加入 d_poly offset。 (感謝 @ShaneSmiskol)
* Added d_poly offset. (Thanks to @ShaneSmiskol)
* 加入 ZSS 支援。(感謝 @bobbydough, @WilliamPrius 建議, @bobbydough 測試)
* Added ZSS support. (Thanks to @bobbydough, @WilliamPrius for recommendation, @bobbydough for testing)
* 加入錯誤記錄至 /sdcard/crash_logs/ (感謝 @ShaneSmiskol 提供代碼)
* Added error logs to /sdcard/crash_logs/ (Special Thanks to @ShaneSmiskol)
* 加入 LQR 控制器開關進設定畫面。
* Added LQR Controller toggle to settings.
dragonpilot 0.7.7.1
========================
* 加入 C2 風扇靜音模式。(感謝 @dingliangxue)
* Added C2 quiet fan mode. (Thanks to @dingliangxue)
* 加入「輔助換道最低啟動速度」、「自動換道最低啟動速度」設定。
* Added "Assisted Lane Change Min Engage Speed" and "Auto Lane Change Min Engage Speed" settings.
* 加入回調校介面。(感謝 @Kent)
* Re-added Dev UI. (Thanks to @Kent)
* 加入 "dp_lqr" 設定來強制使用 RAV4 的 lqr 調校。(感謝 @eisenheim)
* Added "dp_lqr" setting to force enable lqr tuning from RAV4. (Thanks to eisenheim)
dragonpilot 0.7.7.0
========================
* 基於最新 openpilot 0.7.7 devel.
* Based on latest openpilot 0.7.7 devel.
* 當 Manager 出現錯誤時,顯示 IP 位置。(感謝 @dingliangxue)
* When Manager failed, display IP address. (Thanks to @dingliangxue)
* 加回 sr learner 開關。
* Re-added sr learner toggle.
* 加回 加速模式 開關。
* Re-added Accel Profile toggle.
* Toyota 加入改寫最低巡航速度功能。(感謝 @Mojo)
* Added Toyota to override lowerest cruise speed. (Thanks to @Mojo)
* 介面加入盲點偵測顯示。(感謝 @wabes)
* Added BSM indicator to UI. (Thanks to @wabes)
* 加回彎道減速功能。(感謝 @Mojo)
* re-added Slow On Curve functionality. (Thanks to @Mojo)
dragonpilot 0.7.6.2
========================
* 修正無法正確關閉駕駛監控的問題。
* Fixed unable to properly turn off driver monitor issue.
dragonpilot 0.7.6.1
========================
* 基於最新 openpilot 0.7.6.1 devel.
* Based on latest openpilot 0.7.6.1 devel.
* 優化並整合 dp 服務。 (所有的設定檔已改名,請重新設定所有的功能)
* Optimized and integrated several dp services. (Settings have been renamed, please re-config all settings)
* 完全關閉 steer ratio learner。
* Completely disabled steer ratio learner.
* 移除「加速模式」。
* Removed Accel Profile.
* 加入本田皓影混電版指紋v1。(感謝 @劉駿)
* Added Honda Breeze Hybrid FPv1. (Thanks to @劉駿)
* 加入台灣版 Toyota Prius 4.5 指紋v1。(感謝 @jeekid)
* Added Taiwan Toyota Prius 4.5 FPv1. (Thanks to @jeekid)
dragonpilot 0.7.5.4
========================
* Dynamic Follow 更新模型。(感謝 @ShaneSmiskol 提供代碼、 @cgw1968 測試)
* Updated Dynamic Follow model. (Special Thanks to @ShaneSmiskol for the feature and @cgw1968 for testing)
dragonpilot 0.7.5.3
========================
* Dynamic Follow 更新至 ShaneSmiskol:stock_additions 0.7.5 版。(感謝 @ShaneSmiskol 提供代碼、 @Wei 測試)
* Updated Dynamic Follow to ShaneSmiskol:stock_additions 0.7.5. (Special Thanks to @ShaneSmiskol for the feature and @Wei for testing)
* 優化 Lexus GSH 轉向。(感謝 @簡銘佑 測試)
* Optimize Lexus GSH steering. (Thanks to @簡銘佑)
* C2 支援自動關機「DragonAutoShutdownAt」參數。(感謝 @cgw1968 建議)
* C2 to support auto shutdown "DragonAutoShutDownAt" param. (Thanks to @cgw1968)
* 修正出現「pedalPressed」的錯誤。(感謝 @Wei 回報)
* Fixed issue showing "pedalPressed" error. (Thanks to @Wei)
* 將剎車狀熊顯示於 dp 資訊欄。
* Added brake indicator to dp infobar.
* 修正「溫度監控」燈示。
* Fixed "Temp monitor" indicator.
* 加入「方向燈取消控制」延遲控制設。(感謝 @wabes 建議)
* Added delay config to "Disable Lat Control on Blinker". (Thanks to @wabes)
* 加入巴西版 2020 Corolla Hybrid 指紋v2。(感謝 @berno22 提供)
* Added Brazil 2020 Corolla Hybrid FPv2. (Thanks to @berno22)
dragonpilot 0.7.5.2
========================
* 加入對 VW MQB/PQ 的支援。(感謝 @dingliangxue 移植)
* Added support to VW MQB/PQ platform. (Thanks to @dingliangxue)
* 修改成 3 小時後停止供電。(感謝 @Wei 建議)
* Updated to stop charging after 3 hrs. (Thanks to @Wei)
* 移除行車記錄下的「碰撞偵測」功能。
* Removed Impact Detection in Dashcam.
* 修正開啟「Noctua 風扇」模式導致的錯誤。(感謝 @阿濤 回報)
* Fixed a bug caused by enabling "Noctua Mod". (Thanks to @阿濤)
* 修正「位智模式」無法顯示警示的問題。(感謝 @axandres 回報)
* Fixed alert issue in waze mode. (Thanks to @axandres)
* 修正無法顯示更新中圖示的問題。
* Fixed unable to display "UPDATING" icon issue.
* 加入「允許多次自動換道」功能。(感謝 @阿濤 建議)
* Added "Allow Continuous Auto Lane Change" Toggle. (Thanks to @阿濤)
* 修正開機後設定頁面有時會錯誤的問題。(感謝 @salmankhan、@Wei 回報)
* Fixed setting page crash issue. (Thanks to @salmankhan, @Wei)
* 修正熄火後一直出現更新訊息的錯誤。(感謝 @Sky Chang 回報)
* Fixed issue that keep showing update prompt. (Thanks to @Sky Chang)
dragonpilot 0.7.5.1
========================
* 修正因同時使用「社群功能」和「自定車型」造成的加減速問題。(特別感謝 @Wei、@Sky Chang、@Han9365、@鄧育林 的測試以及回報。)
* Fixed acceleration issue caused by used of both "Community Maintain Feature" and "Custom Car Model". (Special Thanks to @Wei, @Sky Chang, @Han9365, @鄧育林)
* 新增 DragonMaxSpeedLimit 設定值 (mph),當如果車速高於此值 op 將會停止操控。(感謝 @Anthony 建議)
* Added DragonMaxSpeedLimit parameter (mph), op will stop controlling when car speed is high than the value. (Thanks to @Anthony)
* 更新 appd 使用 cnpmjs 來下載 APKs。
* Updated appd to use cnpmjs to download APKs.
* 修正更新服務。(感謝 @Wei)
* Fixed Update Service. (Thanks to @Wei)
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v2)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v2). (Thanks to 明峰)
* 新增「通過移動網路上傳」開關
* Added Upload Over Mobile Network toggle.
* 新增「通過熱點上傳」開關
* Added Upload Over Hotspot toggle.
* 新增加拿大版 2018 Toyota Sienna LTD 指紋(v1)。(感謝 明峰 提供)
* Added Canada 2018 Toyota Sienna LTD fingerprint (v1). (Thanks to 明峰)
* 新增大陸版 Volkswagen Golf GTI 指紋 (v1)。(感謝 easyeiji 提供)
* Added China Volkswagen Golf GTI fingerprint (v1). (Thanks to easyeiji)
dragonpilot 0.7.5.0
========================
* 基於最新 openpilot 0.7.5 devel-staging.
* Based on latest openpilot 0.7.5 devel-staging.
* 更新 dp 圖示 (特別感謝 @wabes 的設計與提供)。
* Updated dp logo, special thanks to @wabes for the design.
* 簡/繁中文版和 i18n 整合成為單一版本。
* Merged zhs/zht/i18n versions into one.
* 新增大陸版 CAMRY HYBRID 指紋v2。(感謝 @杜子腾)
* Added China Camery Hybrid FPv2. (Thanks to @杜子腾)
* 新增台灣版 Altis HYBRID 指紋v1。(感謝 @Fish)
* Added Taiwan Altis Hybrid FPv1. (Thanks to @Fish)
* 新增行駛時關閉畫面功能。
* Added Screen off while driving feature.
* 新增倒車時關閉畫面功能。
* Added Screen off while reversing feature.
* 新增駕駛介面加入「加速模式」切換鈕。
* Added acceleration profile toggle onto driving UI.
* 新增自定車型功能,取代指紋暫存功能。
* Replaced fingerprint cache with custom car model selector.
* 新增可調亮度。
* Added Brightness changer.
* 新增部分德語支持。(特別感謝 @arne182 提供)
* Added partial de_DE language support (Thanks to @arne182)
* 新增停車碰撞偵測記錄功能。
* Added off road impact detection to dashcam.
2020-05-06
========================
* 更新 dp 圖示 (特別感謝 @wabes 的設計與提供)。
* 中文版整合進 i18n 版。
* 刪除指紋暫存功能。
* 新增 CAMERY HIBRID 指紋。(感謝 @杜子腾)
* 新增行駛時關閉畫面功能。
* 新增倒車時關閉畫面功能。
* 新增駕駛介面加入「加速模式」切換鈕。
* 新增自定義車型。
2020-04-16
========================
* [DEVEL] 加入台灣版 2016 Lexus IS200t 指紋。(感謝 Philip / Cody Dai)
* [DEVEL] 加入台灣版 2016 Toyota Prius 4.5 代指紋。(感謝 Philip)
* [DEVEL] 加入台灣版 201x Toyota RAV4 4WD 指紋。(感謝 Philip)
* [DEVEL] 加入台灣版 2020 Toyota Auris w/ LTA 指紋。(感謝 Philip)
* [DEVEL] 修正 commIssue 錯誤。(感謝 Kent 協助)
2020-04-13
========================
* [DEVEL] 加入可調整 Toyota Sng 起步反應值 (DragonToyotaSngResponse)。 (特別感謝 @Wei 提供 PR)
* [DEVEL] 駕駛介面加入「動態調整車距」按鈕。(感謝 @cgw1968-5779 建議)
* [DEVEL] 更新 update script。(感謝 深鯨希西 回報)
2020-04-10
========================
* [DEVEL] 更新 panda 至最新的 comma:master 分支。
* [DEVEL] 移除所有的第三方應用改為自動下載。
* [DEVEL] 移除「啟用原廠 DSU 模式」、「安全帶檢查」、「車門檢查」開關。
2020-03-31
========================
* [DEVEL] 更新至 2020-03-31 testing 分支。
2020-03-27
========================
* [DEVEL] 更新至最新的 testing 分支:
* 加入波蘭版 2015 Lexus NX200T 支援。(感謝 wabes 提供)
* 調整「啟用原廠 DSU 模式」為不再需要 AHB 。(Enable Stock DSU Mode no longer requires "AHB" toggle)
* 加入「安全帶檢查」、「車門檢查」、「檔位檢查」、「溫度檢查」開關。
* 加入曲率學習功能 - Curvature Learner 。(感謝 zorrobyte 提供)
* 加入大陸版 2018 Toyota Highlander 支援。(感謝 toyboxZ 提供)
* 加入大陸版 2018 Toyota Camry 2.0 支援。(感謝 Rming 提供)
* 加入韓文支持。(感謝 crwusiz 提供)
* 調整 OFFROAD 主頁翻譯將 "dragonpilot" 改回 "openpilot"。
2020-03-22
========================
* [DEVEL] 更新至最新的 testing 分支。
2020-03-17
========================
* [DEVEL] 更新至最新的 testing 分支 (commaai:devel-staging 0.7.4)。
* [DEVEL] 加入動態調整車距功能。(特別感謝 @ShaneSmiskol 提供 PR)
2020-03-14
========================
* [DEVEL] 更新 pt-Br (葡萄牙語) 翻譯。(感謝 berno22 提供)
* [DEVEL] 加入自動關機開關。(感謝 Rzxd 建議)
* [DEVEL] 調高 Toyota 扭力容錯值。
* [DEVEL] 優化讀取 dp 設定值。
* [DEVEL] 加入 2019 手動 Civic 指紋。感謝 (AlexNoop 提供)
* [DEVEL] dp 功能加入對 Subaru 車系的支援。
2020-03-06
========================
* [DEVEL] 加入葡萄牙語支持。(感謝 berno22 提供)
* [DEVEL] 加入大陸 2018 Camry、2020 RAV4 指紋。(感謝 笨木匠 提供)
* [DEVEL] 建立 devel-i18n 取代 devel-en。
* [DEVEL] devel-en is deprecated, please switch to devel-i18n instead.
2020-03-04
========================
* [DEVEL] 加入顯示駕駛監控畫面。
* [DEVEL] 加入加速模式選項。(特別感謝 @arne182, @cgw1968-5779 提供 PR)
* [DEVEL] 修正 shutdownd 在 comma two 可能會不正常關機的錯誤。(感謝 @Wei, @Rzxd 回報)
2020-02-25
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.3)。
2020-02-21
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.3)。
2020-02-14
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.2)。
* [DEVEL] 修正錯誤。
2020-02-08
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.2)。
* [DEVEL] dp 功能加入對現代 (Hyundai) 車系的支援。
* [DEVEL] 加入神盾測速照相自動啟動的開關。
* [DEVEL] 更新高德地圖至 v4.5.0.600053。
* [DEVEL] 使用 0.6.6 版的更新系統。
* [DEVEL] 修正急剎問題。(感謝 kumar 提供)
2020-01-31
========================
* [DEVEL] 移除行車介面電量、溫度顯示,(修正畫面當機、黑屏問題)
2020-01-29
========================
* [DEVEL] 修正行車介面錯誤。(感謝 深鲸希西 測試;eisenheim、HeatNation 反應)
2020-01-23
========================
* [DEVEL] 加入 Steer Ratio Learner 關閉。(感謝 eisenheim 建議)
* [DEVEL] 行車介面加入電量、溫度。(感謝 eisenheim 建議)
* [DEVEL] 優化 appd。
2020-01-19
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.1)。
* [DEVEL] 調整 appd 和 ALC 邏輯。
2020-01-14
========================
* [DEVEL] 加入開機啟動個人熱點。(感謝 eisenheim 建議)
2020-01-08
========================
* [DEVEL] 加入大陸版 2018 Lexus RX300 支援。(感謝 cafe 提供)
* [DEVEL] 加入 DragonBTG 設定。(感謝 CloudJ、低調哥、歐姓Altis車主 提供)
2019-12-31
========================
* [DEVEL-ZHS] 加回第三方應用。
2019-12-29
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.0)。
* [DEVEL] 輔助/自動變道改為可調整參數 (進階用戶)。(DragonAssistedLCMinMPH、DragonAutoLCMinMPH、DragonAutoLCDelay)
* [DEVEL-ZHS] 修正無法運行第三方應用錯誤。(感謝 深鲸希西 反應)
2019-12-18
========================
* [DEVEL] 修正自動換道邏輯。
* [DEVEL] 更新 offroad 翻譯。
* [DEVEL] 錯誤修正。
* [DEVEL] 移除美版 2017 Civic Hatchback 指紋。(與其它車型衝突)
2019-12-17
========================
* [DEVEL] 更新至最新的 commaai:devel (0.7.0)。
* [DEVEL] 加入輔助換道開關。(24mph / 40kph 以上)
* [DEVEL] 加入自動換道開關。(40mph / 65kph 以上)
* [DEVEL] 加入大陸版 2019 雷凌汽油版指紋。 (感謝 Shell 提供)
* [DEVEL] 加入大陸版 2019 卡羅拉汽油版指紋。 (感謝 Shell 提供)
* [DEVEL] 加入美版 2017 Civic Hatchback 指紋。(感謝 CFranHonda 提供)
2019-12-10
========================
* [DEVEL] 加入位智車機模式。 (Waze Mode)
2019-11-21
========================
* [DEVEL] 修正 offroad 翻譯。(感謝 鄧育林 回報)
* [DEVEL] 調整前車靜止移動偵測參數。
* [DEVEL] 前車靜止移動偵測可在未啟用 dp 時運作。
2019-11-18
========================
* [DEVEL] 修正 offroad 翻譯。(感謝 Cody、鄧育林 回報)
2019-11-18
========================
* [DEVEL] 修正 frame 翻譯。
2019-11-15
========================
* [DEVEL] 修正不會充電的錯誤。 (感謝 袁昊 反應)
2019-11-15
========================
* [DEVEL] 修正充電控制。 (感謝 KT 反應)
* [DEVEL] 更新 frame 翻譯,改為多語言版。 (感謝 深鲸希西、shaoching885、鄧育林 反應)
* [DEVEL] 更新至最新的 commaai:devel (0.6.6)。
2019-11-12
========================
* [DEVEL] 只顯示電量文字 (注意:有時不會更新,需要拔插 USB 線)
* [DEVEL] 自動偵測並鎖定硬體 (EON / UNO)。
2019-11-12
========================
* [DEVEL] 加入鎖定硬體 (EON / UNO) 的程式碼。
2019-11-11
========================
* [DEVEL] 更新高德地圖至 v4.3.0.600310 R2098NSLAE
* [DEVEL] 更新 MiXplorer 至 v6.40.3
* [DEVEL] 更新至最新的 commaai:devel (0.6.6)。
* [DEVEL] 前車靜止移動偵測加入偵測警示。
2019-11-07
========================
* [DEVEL] 讓 Bosch 系統顯示三角。 (感謝 ching885 回報)
* [DEVEL] 更新 offroad 多語言版簡體中文翻譯 (感謝 Rming 提供)
2019-11-06
========================
* [DEVEL] 修正 0.6.6 appd 和 dashcamd 錯誤。 (感謝 鄧育林 回報)
* [DEVEL] 更新至最新的 commaai:devel (0.6.6)。
2019-11-05
========================
* [DEVEL] 加入台灣 Lexus 2017 GS450h 支援。 (感謝 簡銘佑 提供指紋)
2019-11-01
========================
* [DEVEL] 新增神盾測速照相。 (感謝 Sky Chang 和 Wei Yi Chen)
* [DEVEL] 修正 offroad 翻譯。 (感謝 Leo Hsieh)
2019-11-01
========================
* [DEVEL] 移除 Miui 字型,縮小 dp 使用空間。
* [DEVEL] 更新 offroad 為多語言版
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
2019-10-29
========================
* [DEVEL] 加入 SnG 補丁。(感謝 楊雅智)
2019-10-28
========================
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
* [DEVEL] 調整 dragon_allow_gas 邏輯 (請回報任何問題,需更新 Panda 韌體)
2019-10-18
========================
* [DEVEL] 加入前車靜止移動偵測。(測試版,感謝 ucolchen)
* [DEVEL] 移除強迫網路連線提示。(感謝 Shell)
* [DEVEL] 修正 allow_gas 功能。
2019-10-18
========================
* [DEVEL] 加入彎道減速功能開關。
* [DEVEL] 強迫使用 dp 版 Panda 韌體。
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
2019-10-17
========================
* [DEVEL] 加入「車型」顯示於 dp 設定畫面。
* [DEVEL] 修正充電控制讀取預設值的錯誤。
* [DEVEL] 修正無法顯示更新記錄的錯誤。
2019-10-16
========================
* [DEVEL] 刷新 Panda 韌體按鈕將會自動重啟 EON。(感謝 鄧育林 建議)
* [DEVEL] 下載更新記錄時使用 "no-cache" 標頭。
* [DEVEL] 更新高德地圖至 v4.3.0
* [DEVEL] 刪除 bs (Branch Switcher)
2019-10-14
========================
* [DEVEL] 啟用自動更新功能。(感謝 鄧育林 提供)
* [DEVEL] 清除不再使用的 dp params。
* [DEVEL] 加入數字電量指示。(感謝 鄧育林 建議)
* [DEVEL] 加入刷新 Panda 韌體按鈕。
2019-10-11
========================
* [DEVEL] 更新至最新的 commaai:devel (0.6.5)。
* [DEVEL] 加入台灣 2019 RAV4 汽油版指紋。 (感謝 Max Duan / CloudJ 提供)
2019-10-09
========================
* [DEVEL] 加入當 LatCtrl 關閉時,畫面顯示提示訊息。
2019-10-08
========================
* [DEVEL] 加回駕駛監控開關。
* [DEVEL] 加入 bs (branch switcher) 程式。
2019-10-07
========================
* [DEVEL] 加入台灣版 2019 RAV4H 油電版指紋。(感謝 Max Duan 提供)
2019-10-05
========================
* [DEVEL] 移除 curvature learner: 轉角明顯比原廠小。
* [DEVEL] 更新至最新的 commaai:devel (0.6.4)。
2019-09-30
========================
* [DEVEL] 更新 curvature learner 版本至 v4。
* [DEVEL] Lexus ISH 使用更精確的 EPS Steering Angle Sensor
2019-09-27
========================
* [DEVEL] 加入 Zorrobyte 的 curvature learner (https://github.com/zorrobyte/openpilot)
* [DEVEL] 加入可開關駕駛監控的程式碼。
* [DEVEL] 取消當 steering 出現錯誤時,自動切斷方向控制 2 秒的機制。
* [DEVEL] 讓行車介面的「方向盤」/「轉彎」圖示半透明化。
2019-09-26
========================
* [DEVEL] 修正當「啟用記錄服務」關閉時,make 會有問題的錯誤。 (感謝 shaoching885 和 afa 回報)
2019-09-24
========================
* [DEVEL] 行車介面加入可開關的「前車」、「路線」、「車道」設定。
* [DEVEL] 行車介面加入可開關的「方向燈號」提示。 (感謝 CloudJ 建議,程式碼來源: https://github.com/kegman/openpilot)
2019-09-23
========================
* [DEVEL] 優化讀取 params 的次數。
* [DEVEL] 加入可開關的車道偏移警示。
* [DEVEL] 修正充電控制邏輯。
* [DEVEL] 加入台灣 Prius 4.5 指紋。 (感謝 Lin Hsin Hung 提供)
2019-09-20
========================
* [DEVEL] 加入充電控制功能。 (感謝 loveloveses 和 KT 建議)
2019-09-16
========================
* [DEVEL] 加入台灣 CT200h 指紋。 (感謝 CloudJ 提供)
* [DEVEL] 加入美版 CT200h 移植。 (感謝 thomaspich 提供)
2019-09-13
========================
* [DEVEL] 行車介面加入可開關的「速度顯示」設定。
2019-09-09
========================
* [DEVEL] 加入 GreyPanda 模式。
2019-08-28
========================
* [DEVEL] 加入可調警示音量。
2019-08-27
========================
* [DEVEL] 自動關機改為可調時長。
================================================
FILE: CONTRIBUTING.md
================================================
# How to contribute
Our software is open source so you can solve your own problems without needing help from others. And if you solve a problem and are so kind, you can upstream it for the rest of the world to use.
Most open source development activity is coordinated through our [GitHub Discussions](https://github.com/commaai/openpilot/discussions) and [Discord](https://discord.comma.ai). A lot of documentation is available on our [blog](https://blog.comma.ai/).
## Getting Started
* Join our [Discord](https://discord.comma.ai)
* Make sure you have a [GitHub account](https://github.com/signup/free)
* Fork [our repositories](https://github.com/commaai) on GitHub
## Testing
### Automated Testing
All PRs and commits are automatically checked by GitHub Actions. Check out `.github/workflows/` for what GitHub Actions runs. Any new tests should be added to GitHub Actions.
### Code Style and Linting
Code is automatically checked for style by GitHub Actions as part of the automated tests. You can also run these tests yourself by running `pre-commit run --all`.
## Car Ports (openpilot)
We've released a [Model Port guide](https://blog.comma.ai/openpilot-port-guide-for-toyota-models/) for porting to Toyota/Lexus models.
If you port openpilot to a substantially new car brand, see this more generic [Brand Port guide](https://blog.comma.ai/how-to-write-a-car-port-for-openpilot/).
## Pull Requests
Pull requests should be against the master branch. Before running master on in-car hardware, you'll need to clone the submodules too. That can be done by recursively cloning the repository:
```
git clone https://github.com/commaai/openpilot.git --recursive
```
Or alternatively, when on the master branch:
```
git submodule update --init
```
The reasons for having submodules on a dedicated repository and our new development philosophy can be found in our [post about externalization](https://blog.comma.ai/a-2020-theme-externalization/).
Modules that are in seperate repositories include:
* cereal
* laika
* opendbc
* panda
* rednose
================================================
FILE: CONTRIBUTORS.md
================================================
# CONTRIBUTORS
Due to the way we manage the source code, it is not possible to see all the contributors' info, hence we create a list here.
If you have contributed to DP project before and your name is not listed here, feel free to send us a PR to update this!
### TEAM
Name | github | Role
------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------
cafe | [cafe](https://github.com/coffice12) | Resource Provider
cgw1968 | [cgw1968](https://github.com/cgw1968-5779) | C2/C3 Toyota Beta Tester
kumar | [rav4kumar](https://github.com/rav4kumar) | Release Maintainer
loveloveses | [loveloveses](https://github.com/loveloveses) | Wiki Maintainer
Rick Lan | [efinilan](https://github.com/efinilan) | Release Maintainer
Stupefacient | [Stupefacient](https://github.com/Stupefacient) | C2/C3 Toyota Beta Tester
CCZ | [CCZ](https://github.com/czdeee) | UI developer, Simplified Chinese Translator
### CONTRIBUTORS
Name | github
------------------------------------------------------------ | ------------------------------------------------------------
andy741217 | [andy741217](https://github.com/andy741217)
Arne Schwarck | [arne182](https://github.com/arne182)
berno22 | [berno22](https://github.com/berno22)
Bobbydough | [Bobbydough](https://github.com/bobbydough)
TIM | [TIM](https://github.com/CT921)
Curtis Jenkins | [actuallylemoncurd](https://github.com/actuallylemoncurd)
DFyffe | [donfyffe](https://github.com/donfyffe)
dinglx | [dingliangxue](https://github.com/dingliangxue)
eyezenheim | [eyezenheim](https://github.com/eyezenheim)
Jason Wen | [sunnyhaibin](https://github.com/sunnyhaibin)
kegman | [kegman](https://github.com/kegman)
lijunhao731 | [lijunhao731](https://github.com/lijunhao731)
lirudy | [lirudy](https://github.com/lirudy)
LOVEChen | [LOVEChen](https://github.com/LOVEChen)
menwenliang | [menwenliang](https://github.com/menwenliang)
move-fast | [move-fast](https://github.com/move-fast)
Nelson Chen | [nelsonjchen](https://github.com/nelsonjchen)
rming | [Rming](https://github.com/rming)
sebastian4k | [sebastian4k](https://github.com/sebastian4k)
Shane Smiskol | [sshane](https://github.com/sshane)
toyboxZ | [toyboxZ](https://github.com/toyboxZ)
================================================
FILE: HOWTO-ONEPLUS.md
================================================
How to install on Oneplus 3t?
------
1. clone dragonpilot to /data/ and make sure it's named openpilot:
(手動安裝切換至 dp)
```
cd /data/ && rm -fr openpilot ; git clone https://github.com/dragonpilot-community/dragonpilot.git openpilot -b 0.8.8
```
2. run command:
(在 ssh 畫面下,輸入)
```
cd /data/openpilot/scripts/ && ./oneplus_update_neos.sh
```
3. Let it download and complete it update, after a couple of reboot, your screen will then stay in fastboot mode.
(等待下載並讓它重新開機,沒錯誤的話會進入 Android 機器人更新畫面,等自動重新開機)
4. In fastboot mode, select use volume button to select to `Recovery mode` then press power button.
(在 fastboot 模式,用音量鍵上下選到 Recovery mode 再按下電源鍵)
5. In Recovery mode, tap `apply update` -> `Choose from emulated` -> `0/` -> `update.zip` -> `Reboot system now`
(在 Recovery mode,點選 `apply update` -> `Choose from emulated` -> `0/` -> `update.zip` -> `Reboot system now`)
6. You should be able to boot into openpilot, if touch screen is not working, try to reboot again.
(你現在應該可以進入 openpilot 畫面,如果點擊畫面沒有反應,請再重新開機一次)
================================================
FILE: HOWTO-Translate.md
================================================
HOW TO Translate dragonpilot
--
If you would like to help to translate dragonpilot into your native language, please:
1. Contact dragonpilot team to generate language files for translation.
2. Start translation, there will be 2 files: (locale = your language code)
* <openpilot>/selfdrive/assets/locales/**locale**/LC_MESSAGES/events.po
* This is for alerts messages. (e.g. on road warning messages)
* <openpilot>/selfdrive/ui/translations/**locale**.ts
* This is for UI. (e.g. settings pages)
We recommended to use a proper editor such as TextMate (mac) / notepad++ (win) / Intellij pyCharm.
3. Submit a PR for your translation.
4. dragonpilot team will review your PR and add it in the next release.
================================================
FILE: Jenkinsfile
================================================
def phone(String ip, String step_label, String cmd) {
withCredentials([file(credentialsId: 'id_rsa', variable: 'key_file')]) {
def ssh_cmd = """
ssh -tt -o StrictHostKeyChecking=no -i ${key_file} -p 8022 'comma@${ip}' /usr/bin/bash <<'EOF'
set -e
export CI=1
export TEST_DIR=${env.TEST_DIR}
export SOURCE_DIR=${env.SOURCE_DIR}
export GIT_BRANCH=${env.GIT_BRANCH}
export GIT_COMMIT=${env.GIT_COMMIT}
source ~/.bash_profile
if [ -f /TICI ]; then
source /etc/profile
fi
ln -snf ${env.TEST_DIR} /data/pythonpath
if [ -f /EON ]; then
echo \$\$ > /dev/cpuset/app/tasks || true
echo \$PPID > /dev/cpuset/app/tasks || true
mkdir -p /dev/shm
chmod 777 /dev/shm
fi
cd ${env.TEST_DIR} || true
${cmd}
exit 0
EOF"""
sh script: ssh_cmd, label: step_label
}
}
def phone_steps(String device_type, steps) {
lock(resource: "", label: device_type, inversePrecedence: true, variable: 'device_ip', quantity: 1) {
timeout(time: 150, unit: 'MINUTES') {
phone(device_ip, "git checkout", readFile("selfdrive/test/setup_device_ci.sh"),)
steps.each { item ->
phone(device_ip, item[0], item[1])
}
}
}
}
pipeline {
agent none
environment {
TEST_DIR = "/data/openpilot"
SOURCE_DIR = "/data/openpilot_source/"
}
options {
timeout(time: 3, unit: 'HOURS')
}
stages {
stage('Build release2') {
agent {
docker {
image 'python:3.7.3'
args '--user=root'
}
}
when {
branch 'devel-staging'
}
steps {
phone_steps("eon-build", [
["build release2-staging & dashcam-staging", "cd release && PUSH=1 ./build_release2.sh"],
])
}
}
stage('Build release3') {
agent {
docker {
image 'python:3.7.3'
args '--user=root'
}
}
when {
branch 'devel-staging'
}
steps {
phone_steps("tici", [
["build release3-staging & dashcam3-staging", "PUSH=1 $SOURCE_DIR/release/build_release3.sh"],
])
}
}
stage('openpilot tests') {
when {
not {
anyOf {
branch 'master-ci'; branch 'devel'; branch 'devel-staging';
branch 'release2'; branch 'release2-staging'; branch 'dashcam'; branch 'dashcam-staging';
branch 'release3'; branch 'release3-staging'; branch 'dashcam3'; branch 'dashcam3-staging';
branch 'testing-closet*'; branch 'hotfix-*'
}
}
}
stages {
/*
stage('PC tests') {
agent {
dockerfile {
filename 'Dockerfile.openpilotci'
args '--privileged --shm-size=1G --user=root'
}
}
stages {
stage('Build') {
steps {
sh 'scons -j$(nproc)'
}
}
}
post {
always {
// fix permissions since docker runs as another user
sh "chmod -R 777 ."
}
}
}
*/
stage('On-device Tests') {
agent {
docker {
/*
filename 'Dockerfile.ondevice_ci'
args "--privileged -v /dev:/dev --shm-size=1G --user=root"
*/
image 'python:3.7.3'
args '--user=root'
}
}
stages {
stage('parallel tests') {
parallel {
stage('Devel Tests') {
steps {
phone_steps("eon-build", [
["build devel", "cd $SOURCE_DIR/release && EXTRA_FILES='tools/' ./build_devel.sh"],
["build openpilot", "cd selfdrive/manager && ./build.py"],
["test manager", "python selfdrive/manager/test/test_manager.py"],
["onroad tests", "cd selfdrive/test/ && ./test_onroad.py"],
["test car interfaces", "cd selfdrive/car/tests/ && ./test_car_interfaces.py"],
])
}
}
stage('Replay Tests') {
steps {
phone_steps("eon2", [
["build", "cd selfdrive/manager && ./build.py"],
["model replay", "cd selfdrive/test/process_replay && ./model_replay.py"],
])
}
}
stage('HW + Unit Tests') {
steps {
phone_steps("eon", [
["build", "cd selfdrive/manager && ./build.py"],
["test athena", "nosetests -s selfdrive/athena/tests/test_athenad_old.py"],
["test sounds", "nosetests -s selfdrive/ui/tests/test_sounds.py"],
["test boardd loopback", "nosetests -s selfdrive/boardd/tests/test_boardd_loopback.py"],
["test loggerd", "python selfdrive/loggerd/tests/test_loggerd.py"],
["test encoder", "python selfdrive/loggerd/tests/test_encoder.py"],
["test logcatd", "python selfdrive/logcatd/tests/test_logcatd_android.py"],
//["test updater", "python installer/updater/test_updater.py"],
])
}
}
/*
stage('Power Consumption Tests') {
steps {
lock(resource: "", label: "c2-zookeeper", inversePrecedence: true, variable: 'device_ip', quantity: 1) {
timeout(time: 90, unit: 'MINUTES') {
sh script: "/home/batman/tools/zookeeper/enable_and_wait.py $device_ip 120", label: "turn on device"
phone(device_ip, "git checkout", readFile("selfdrive/test/setup_device_ci.sh"),)
phone(device_ip, "build", "scons -j4 && sync")
sh script: "/home/batman/tools/zookeeper/disable.py $device_ip", label: "turn off device"
sh script: "/home/batman/tools/zookeeper/enable_and_wait.py $device_ip 120", label: "turn on device"
sh script: "/home/batman/tools/zookeeper/check_consumption.py 60 3", label: "idle power consumption after boot"
sh script: "/home/batman/tools/zookeeper/ignition.py 1", label: "go onroad"
sh script: "/home/batman/tools/zookeeper/check_consumption.py 60 10", label: "onroad power consumption"
sh script: "/home/batman/tools/zookeeper/ignition.py 0", label: "go offroad"
sh script: "/home/batman/tools/zookeeper/check_consumption.py 60 2", label: "idle power consumption offroad"
}
}
}
}
*/
stage('tici Build') {
environment {
R3_PUSH = "${env.BRANCH_NAME == 'master' ? '1' : ' '}"
}
steps {
phone_steps("tici", [
["build", "cd selfdrive/manager && ./build.py"],
["onroad tests", "cd selfdrive/test/ && ./test_onroad.py"],
])
}
}
stage('Unit Tests (tici)') {
steps {
phone_steps("tici2", [
["build", "cd selfdrive/manager && ./build.py"],
["test loggerd", "python selfdrive/loggerd/tests/test_loggerd.py"],
["test encoder", "LD_LIBRARY_PATH=/usr/local/lib python selfdrive/loggerd/tests/test_encoder.py"],
])
}
}
stage('camerad') {
steps {
phone_steps("eon-party", [
["build", "cd selfdrive/manager && ./build.py"],
["test camerad", "python selfdrive/camerad/test/test_camerad.py"],
["test exposure", "python selfdrive/camerad/test/test_exposure.py"],
])
}
}
stage('Tici camerad') {
steps {
phone_steps("tici-party", [
["build", "cd selfdrive/manager && ./build.py"],
["test camerad", "python selfdrive/camerad/test/test_camerad.py"],
["test exposure", "python selfdrive/camerad/test/test_exposure.py"],
])
}
}
}
}
stage('Push master-ci') {
when {
branch 'master'
}
steps {
phone_steps("eon-build", [
["push devel", "cd $SOURCE_DIR/release && PUSH='master-ci' ./build_devel.sh"],
])
}
}
}
post {
always {
cleanWs()
}
}
}
}
}
}
}
================================================
FILE: LICENSE
================================================
Copyright (c) 2018, Comma.ai, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README-openpilot.md
================================================

Table of Contents
=======================
* [What is openpilot?](#what-is-openpilot)
* [Integration with Stock Features](#integration-with-stock-features)
* [Supported Hardware](#supported-hardware)
* [Supported Cars](#supported-cars)
* [Community Maintained Cars and Features](#community-maintained-cars-and-features)
* [Installation Instructions](#installation-instructions)
* [Limitations of openpilot ALC and LDW](#limitations-of-openpilot-alc-and-ldw)
* [Limitations of openpilot ACC and FCW](#limitations-of-openpilot-acc-and-fcw)
* [Limitations of openpilot DM](#limitations-of-openpilot-dm)
* [User Data and comma Account](#user-data-and-comma-account)
* [Safety and Testing](#safety-and-testing)
* [Testing on PC](#testing-on-pc)
* [Community and Contributing](#community-and-contributing)
* [Directory Structure](#directory-structure)
* [Licensing](#licensing)
---
What is openpilot?
------
[openpilot](http://github.com/commaai/openpilot) is an open source driver assistance system. Currently, openpilot performs the functions of Adaptive Cruise Control (ACC), Automated Lane Centering (ALC), Forward Collision Warning (FCW) and Lane Departure Warning (LDW) for a growing variety of supported [car makes, models and model years](#supported-cars). In addition, while openpilot is engaged, a camera based Driver Monitoring (DM) feature alerts distracted and asleep drivers.
<table>
<tr>
<td><a href="https://www.youtube.com/watch?v=mgAbfr42oI8" title="YouTube" rel="noopener"><img src="https://i.imgur.com/kAtT6Ei.png"></a></td>
<td><a href="https://www.youtube.com/watch?v=394rJKeh76k" title="YouTube" rel="noopener"><img src="https://i.imgur.com/lTt8cS2.png"></a></td>
<td><a href="https://www.youtube.com/watch?v=1iNOc3cq8cs" title="YouTube" rel="noopener"><img src="https://i.imgur.com/ANnuSpe.png"></a></td>
<td><a href="https://www.youtube.com/watch?v=Vr6NgrB-zHw" title="YouTube" rel="noopener"><img src="https://i.imgur.com/Qypanuq.png"></a></td>
</tr>
<tr>
<td><a href="https://www.youtube.com/watch?v=Ug41KIKF0oo" title="YouTube" rel="noopener"><img src="https://i.imgur.com/3caZ7xM.png"></a></td>
<td><a href="https://www.youtube.com/watch?v=NVR_CdG1FRg" title="YouTube" rel="noopener"><img src="https://i.imgur.com/bAZOwql.png"></a></td>
<td><a href="https://www.youtube.com/watch?v=tkEvIdzdfUE" title="YouTube" rel="noopener"><img src="https://i.imgur.com/EFINEzG.png"></a></td>
<td><a href="https://www.youtube.com/watch?v=_P-N1ewNne4" title="YouTube" rel="noopener"><img src="https://i.imgur.com/gAyAq22.png"></a></td>
</tr>
</table>
Integration with Stock Features
------
In all supported cars:
* Stock Lane Keep Assist (LKA) and stock ALC are replaced by openpilot ALC, which only functions when openpilot is engaged by the user.
* Stock LDW is replaced by openpilot LDW.
Additionally, on specific supported cars (see ACC column in [supported cars](#supported-cars)):
* Stock ACC is replaced by openpilot ACC.
* openpilot FCW operates in addition to stock FCW.
openpilot should preserve all other vehicle's stock features, including, but are not limited to: FCW, Automatic Emergency Braking (AEB), auto high-beam, blind spot warning, and side collision warning.
Supported Hardware
------
At the moment, openpilot supports the EON Gold DevKit, [comma two](https://comma.ai/shop/products/two), and [comma three](https://comma.ai/shop/products/three). A [car harness](https://comma.ai/shop/products/car-harness) is recommended to connect your device to the car. For experimental purposes, openpilot can also run on an Ubuntu computer with external [webcams](https://github.com/commaai/openpilot/tree/master/tools/webcam).
Supported Cars
------
| Make | Model (US Market Reference) | Supported Package | ACC | No ACC accel below | No ALC below |
| ----------| ------------------------------| ------------------| -----------------| -------------------| ------------------|
| Acura | ILX 2016-19 | AcuraWatch Plus | openpilot | 25mph<sup>1</sup> | 25mph |
| Acura | RDX 2016-18 | AcuraWatch Plus | openpilot | 25mph<sup>1</sup> | 12mph |
| Acura | RDX 2019-21 | All | Stock | 0mph | 3mph |
| Honda | Accord 2018-20 | All | Stock | 0mph | 3mph |
| Honda | Accord Hybrid 2018-20 | All | Stock | 0mph | 3mph |
| Honda | Civic Hatchback 2017-21 | Honda Sensing | Stock | 0mph | 12mph |
| Honda | Civic Coupe 2016-18 | Honda Sensing | openpilot | 0mph | 12mph |
| Honda | Civic Coupe 2019-20 | All | Stock | 0mph | 2mph<sup>2</sup> |
| Honda | Civic Sedan 2016-18 | Honda Sensing | openpilot | 0mph | 12mph |
| Honda | Civic Sedan 2019-20 | All | Stock | 0mph | 2mph<sup>2</sup> |
| Honda | CR-V 2015-16 | Touring | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | CR-V 2017-21 | Honda Sensing | Stock | 0mph | 12mph |
| Honda | CR-V Hybrid 2017-2019 | Honda Sensing | Stock | 0mph | 12mph |
| Honda | e 2020 | All | Stock | 0mph | 3mph |
| Honda | Fit 2018-19 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | HR-V 2019-20 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | Insight 2019-21 | All | Stock | 0mph | 3mph |
| Honda | Inspire 2018 | All | Stock | 0mph | 3mph |
| Honda | Odyssey 2018-20 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 0mph |
| Honda | Passport 2019 | All | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | Pilot 2016-19 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
| Honda | Ridgeline 2017-21 | Honda Sensing | openpilot | 25mph<sup>1</sup> | 12mph |
| Hyundai | Palisade 2020-21 | All | Stock | 0mph | 0mph |
| Hyundai | Sonata 2020-21 | All | Stock | 0mph | 0mph |
| Lexus | CT Hybrid 2017-18 | LSS | Stock<sup>3</sup>| 0mph | 0mph |
| Lexus | ES 2019-21 | All | openpilot | 0mph | 0mph |
| Lexus | ES Hybrid 2017-18 | LSS | Stock<sup>3</sup>| 0mph | 0mph |
| Lexus | ES Hybrid 2019-21 | All | openpilot | 0mph | 0mph |
| Lexus | IS 2017-2019 | All | Stock | 22mph | 0mph |
| Lexus | NX 2018 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Lexus | NX 2020 | All | openpilot | 0mph | 0mph |
| Lexus | NX Hybrid 2018-19 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Lexus | RX 2016-18 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Lexus | RX 2020-21 | All | openpilot | 0mph | 0mph |
| Lexus | RX Hybrid 2016-19 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Lexus | RX Hybrid 2020-21 | All | openpilot | 0mph | 0mph |
| Lexus | UX Hybrid 2019-21 | All | openpilot | 0mph | 0mph |
| Toyota | Alphard 2020 | All | openpilot | 0mph | 0mph |
| Toyota | Avalon 2016-21 | TSS-P | Stock<sup>3</sup>| 20mph<sup>1</sup> | 0mph |
| Toyota | Avalon Hybrid 2019-21 | TSS-P | Stock<sup>3</sup>| 20mph<sup>1</sup> | 0mph |
| Toyota | Camry 2018-20 | All | Stock | 0mph<sup>4</sup> | 0mph |
| Toyota | Camry 2021 | All | openpilot | 0mph<sup>4</sup> | 0mph |
| Toyota | Camry Hybrid 2018-20 | All | Stock | 0mph<sup>4</sup> | 0mph |
| Toyota | Camry Hybrid 2021 | All | openpilot | 0mph | 0mph |
| Toyota | C-HR 2017-20 | All | Stock | 0mph | 0mph |
| Toyota | C-HR Hybrid 2017-19 | All | Stock | 0mph | 0mph |
| Toyota | Corolla 2017-19 | All | Stock<sup>3</sup>| 20mph<sup>1</sup> | 0mph |
| Toyota | Corolla 2020-22 | All | openpilot | 0mph | 0mph |
| Toyota | Corolla Hatchback 2019-21 | All | openpilot | 0mph | 0mph |
| Toyota | Corolla Hybrid 2020-21 | All | openpilot | 0mph | 0mph |
| Toyota | Highlander 2017-19 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Toyota | Highlander 2020-21 | All | openpilot | 0mph | 0mph |
| Toyota | Highlander Hybrid 2017-19 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Toyota | Highlander Hybrid 2020-21 | All | openpilot | 0mph | 0mph |
| Toyota | Mirai 2021 | All | openpilot | 0mph | 0mph |
| Toyota | Prius 2016-20 | TSS-P | Stock<sup>3</sup>| 0mph | 0mph |
| Toyota | Prius 2021 | All | openpilot | 0mph | 0mph |
| Toyota | Prius Prime 2017-20 | All | Stock<sup>3</sup>| 0mph | 0mph |
| Toyota | Prius Prime 2021 | All | openpilot | 0mph | 0mph |
| Toyota | Rav4 2016-18 | TSS-P | Stock<sup>3</sup>| 20mph<sup>1</sup> | 0mph |
| Toyota | Rav4 2019-21 | All | openpilot | 0mph | 0mph |
| Toyota | Rav4 Hybrid 2016-18 | TSS-P | Stock<sup>3</sup>| 0mph | 0mph |
| Toyota | Rav4 Hybrid 2019-21 | All | openpilot | 0mph | 0mph |
| Toyota | Sienna 2018-20 | All | Stock<sup>3</sup>| 0mph | 0mph |
<sup>1</sup>[Comma Pedal](https://github.com/commaai/openpilot/wiki/comma-pedal) is used to provide stop-and-go capability to some of the openpilot-supported cars that don't currently support stop-and-go. ***NOTE: The Comma Pedal is not officially supported by [comma](https://comma.ai).*** <br />
<sup>2</sup>2019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph. <br />
<sup>3</sup>When disconnecting the Driver Support Unit (DSU), openpilot ACC will replace stock ACC. ***NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).*** <br />
<sup>4</sup>28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control. <br />
Community Maintained Cars and Features
------
| Make | Model (US Market Reference) | Supported Package | ACC | No ACC accel below | No ALC below |
| ----------| ------------------------------| ------------------| -----------------| -------------------| -------------|
| Audi | A3 2014-19 | Prestige | Stock | 0mph | 0mph |
| Audi | A3 Sportback e-tron 2017-18 | Prestige | Stock | 0mph | 0mph |
| Audi | Q2 2018 | Driver Assistance | Stock | 0mph | 0mph |
| Buick | Regal 2018<sup>1</sup> | Adaptive Cruise | openpilot | 0mph | 7mph |
| Cadillac | ATS 2018<sup>1</sup> | Adaptive Cruise | openpilot | 0mph | 7mph |
| Chevrolet | Malibu 2017<sup>1</sup> | Adaptive Cruise | openpilot | 0mph | 7mph |
| Chevrolet | Volt 2017-18<sup>1</sup> | Adaptive Cruise | openpilot | 0mph | 7mph |
| Chrysler | Pacifica 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
| Chrysler | Pacifica 2020 | Adaptive Cruise | Stock | 0mph | 39mph |
| Chrysler | Pacifica Hybrid 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
| Chrysler | Pacifica Hybrid 2019-21 | Adaptive Cruise | Stock | 0mph | 39mph |
| Genesis | G70 2018 | All | Stock | 0mph | 0mph |
| Genesis | G80 2018 | All | Stock | 0mph | 0mph |
| Genesis | G90 2018 | All | Stock | 0mph | 0mph |
| GMC | Acadia 2018<sup>1</sup> | Adaptive Cruise | openpilot | 0mph | 7mph |
| Holden | Astra 2017<sup>1</sup> | Adaptive Cruise | openpilot | 0mph | 7mph |
| Hyundai | Elantra 2017-19 | SCC + LKAS | Stock | 19mph | 34mph |
| Hyundai | Elantra 2021 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Elantra Hybrid 2021 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Genesis 2015-16 | SCC + LKAS | Stock | 19mph | 37mph |
| Hyundai | Ioniq Electric 2019 | SCC + LKAS | Stock | 0mph | 32mph |
| Hyundai | Ioniq Electric 2020 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Ioniq PHEV 2020 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Kona 2020 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Kona EV 2018-19 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Kona Hybrid 2020 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Santa Fe 2019-20 | All | Stock | 0mph | 0mph |
| Hyundai | Sonata 2018-2019 | SCC + LKAS | Stock | 0mph | 0mph |
| Hyundai | Sonata Hybrid 2021 | All | Stock | 0mph | 0mph |
| Hyundai | Veloster 2019-20 | SCC + LKAS | Stock | 5mph | 0mph |
| Jeep | Grand Cherokee 2016-18 | Adaptive Cruise | Stock | 0mph | 9mph |
| Jeep | Grand Cherokee 2019-20 | Adaptive Cruise | Stock | 0mph | 39mph |
| Kia | Forte 2018-21 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Niro EV 2019-21 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Niro Hybrid 2021 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Niro PHEV 2019 | SCC + LKAS | Stock | 10mph | 32mph |
| Kia | Optima 2017 | SCC + LKAS | Stock | 0mph | 32mph |
| Kia | Optima 2019 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Seltos 2021 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Sorento 2018-19 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Stinger 2018 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Ceed 2019 | SCC + LKAS | Stock | 0mph | 0mph |
| Kia | Telluride 2020 | SCC + LKAS | Stock | 0mph | 0mph |
| Nissan | Altima 2019-20 | ProPILOT | Stock | 0mph | 0mph |
| Nissan | Leaf 2018-20 | ProPILOT | Stock | 0mph | 0mph |
| Nissan | Rogue 2018-20 | ProPILOT | Stock | 0mph | 0mph |
| Nissan | X-Trail 2017 | ProPILOT | Stock | 0mph | 0mph |
| SEAT | Ateca 2018 | Driver Assistance | Stock | 0mph | 0mph |
| SEAT | Leon 2014-2020 | Driver Assistance | Stock | 0mph | 0mph |
| Škoda | Kodiaq 2018-19 | Driver Assistance | Stock | 0mph | 0mph |
| Škoda | Octavia 2015, 2018-19 | Driver Assistance | Stock | 0mph | 0mph |
| Škoda | Octavia RS 2016 | Driver Assistance | Stock | 0mph | 0mph |
| Škoda | Scala 2020 | Driver Assistance | Stock | 0mph | 0mph |
| Škoda | Superb 2015-18 | Driver Assistance | Stock | 0mph | 0mph |
| Subaru | Ascent 2019 | EyeSight | Stock | 0mph | 0mph |
| Subaru | Crosstrek 2018-19 | EyeSight | Stock | 0mph | 0mph |
| Subaru | Forester 2019-21 | EyeSight | Stock | 0mph | 0mph |
| Subaru | Impreza 2017-19 | EyeSight | Stock | 0mph | 0mph |
| Volkswagen| Atlas 2018-19 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| e-Golf 2014, 2019-20 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf 2015-20 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf Alltrack 2017-18 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf GTE 2016 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf GTI 2018-20 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf R 2016-19 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf SportsVan 2016 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf SportWagen 2015 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Jetta 2018-20 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Jetta GLI 2021 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Passat 2016-17<sup>2</sup> | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| T-Cross 2021 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Tiguan 2020 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Touran 2017 | Driver Assistance | Stock | 0mph | 0mph |
<sup>1</sup>Requires an [OBD-II car harness](https://comma.ai/shop/products/comma-car-harness) and [community built ASCM harness](https://github.com/commaai/openpilot/wiki/GM#hardware). ***NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).*** <br />
<sup>2</sup>Only includes the MQB Passat sold outside of North America. The NMS Passat made in Chattanooga TN is not yet supported.
Community Maintained Cars and Features are not verified by comma to meet our [safety model](SAFETY.md). Be extra cautious using them. They are only available after enabling the toggle in `Settings->Developer->Enable Community Features`.
To promote a car from community maintained, it must meet a few requirements. We must own one from the brand, we must sell the harness for it, has full ISO26262 in both panda and openpilot, there must be a path forward for longitudinal control, it must have AEB still enabled, and it must support fingerprinting 2.0
Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/).
Installation Instructions
------
Install openpilot on a supported device by entering ``https://openpilot.comma.ai`` during the installer setup.
Follow these [video instructions](https://youtu.be/lcjqxCymins) to properly mount the device on the windshield. Note: openpilot features an automatic pose calibration routine and openpilot performance should not be affected by small pitch and yaw misalignments caused by imprecise device mounting.
Before placing the device on your windshield, check the state and local laws and ordinances where you drive. Some state laws prohibit or restrict the placement of objects on the windshield of a motor vehicle.
You will be able to engage openpilot after reviewing the onboarding screens and finishing the calibration procedure.
Limitations of openpilot ALC and LDW
------
openpilot ALC and openpilot LDW do not automatically drive the vehicle or reduce the amount of attention that must be paid to operate your vehicle. The driver must always keep control of the steering wheel and be ready to correct the openpilot ALC action at all times.
While changing lanes, openpilot is not capable of looking next to you or checking your blind spot. Only nudge the wheel to initiate a lane change after you have confirmed it's safe to do so.
Many factors can impact the performance of openpilot ALC and openpilot LDW, causing them to be unable to function as intended. These include, but are not limited to:
* Poor visibility (heavy rain, snow, fog, etc.) or weather conditions that may interfere with sensor operation.
* The road facing camera is obstructed, covered or damaged by mud, ice, snow, etc.
* Obstruction caused by applying excessive paint or adhesive products (such as wraps, stickers, rubber coating, etc.) onto the vehicle.
* The device is mounted incorrectly.
* When in sharp curves, like on-off ramps, intersections etc...; openpilot is designed to be limited in the amount of steering torque it can produce.
* In the presence of restricted lanes or construction zones.
* When driving on highly banked roads or in presence of strong cross-wind.
* Extremely hot or cold temperatures.
* Bright light (due to oncoming headlights, direct sunlight, etc.).
* Driving on hills, narrow, or winding roads.
The list above does not represent an exhaustive list of situations that may interfere with proper operation of openpilot components. It is the driver's responsibility to be in control of the vehicle at all times.
Limitations of openpilot ACC and FCW
------
openpilot ACC and openpilot FCW are not systems that allow careless or inattentive driving. It is still necessary for the driver to pay close attention to the vehicle’s surroundings and to be ready to re-take control of the gas and the brake at all times.
Many factors can impact the performance of openpilot ACC and openpilot FCW, causing them to be unable to function as intended. These include, but are not limited to:
* Poor visibility (heavy rain, snow, fog, etc.) or weather conditions that may interfere with sensor operation.
* The road facing camera or radar are obstructed, covered, or damaged by mud, ice, snow, etc.
* Obstruction caused by applying excessive paint or adhesive products (such as wraps, stickers, rubber coating, etc.) onto the vehicle.
* The device is mounted incorrectly.
* Approaching a toll booth, a bridge or a large metal plate.
* When driving on roads with pedestrians, cyclists, etc...
* In presence of traffic signs or stop lights, which are not detected by openpilot at this time.
* When the posted speed limit is below the user selected set speed. openpilot does not detect speed limits at this time.
* In presence of vehicles in the same lane that are not moving.
* When abrupt braking maneuvers are required. openpilot is designed to be limited in the amount of deceleration and acceleration that it can produce.
* When surrounding vehicles perform close cut-ins from neighbor lanes.
* Driving on hills, narrow, or winding roads.
* Extremely hot or cold temperatures.
* Bright light (due to oncoming headlights, direct sunlight, etc.).
* Interference from other equipment that generates radar waves.
The list above does not represent an exhaustive list of situations that may interfere with proper operation of openpilot components. It is the driver's responsibility to be in control of the vehicle at all times.
Limitations of openpilot DM
------
openpilot DM should not be considered an exact measurement of the alertness of the driver.
Many factors can impact the performance of openpilot DM, causing it to be unable to function as intended. These include, but are not limited to:
* Low light conditions, such as driving at night or in dark tunnels.
* Bright light (due to oncoming headlights, direct sunlight, etc.).
* The driver's face is partially or completely outside field of view of the driver facing camera.
* The driver facing camera is obstructed, covered, or damaged.
The list above does not represent an exhaustive list of situations that may interfere with proper operation of openpilot components. A driver should not rely on openpilot DM to assess their level of attention.
User Data and comma Account
------
By default, openpilot uploads the driving data to our servers. You can also access your data by pairing with the comma connect app ([iOS](https://apps.apple.com/us/app/comma-connect/id1456551889), [Android](https://play.google.com/store/apps/details?id=ai.comma.connect&hl=en_US)). We use your data to train better models and improve openpilot for everyone.
openpilot is open source software: the user is free to disable data collection if they wish to do so.
openpilot logs the road facing camera, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.
The driver facing camera is only logged if you explicitly opt-in in settings. The microphone is not recorded.
By using openpilot, you agree to [our Privacy Policy](https://connect.comma.ai/privacy). You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.
Safety and Testing
----
* openpilot observes ISO26262 guidelines, see [SAFETY.md](SAFETY.md) for more details.
* openpilot has software in the loop [tests](.github/workflows/selfdrive_tests.yaml) that run on every commit.
* The safety model code lives in panda and is written in C, see [code rigor](https://github.com/commaai/panda#code-rigor) for more details.
* panda has software in the loop [safety tests](https://github.com/commaai/panda/tree/master/tests/safety).
* Internally, we have a hardware in the loop Jenkins test suite that builds and unit tests the various processes.
* panda has additional hardware in the loop [tests](https://github.com/commaai/panda/blob/master/Jenkinsfile).
* We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.
Testing on PC
------
For simplified development and experimentation, openpilot can be run in the CARLA driving simulator, which allows you to develop openpilot without a car. The whole setup should only take a few minutes.
Steps:
1) Start the CARLA server on first terminal
```
bash -c "$(curl https://raw.githubusercontent.com/commaai/openpilot/master/tools/sim/start_carla.sh)"
```
2) Start openpilot on second terminal
```
bash -c "$(curl https://raw.githubusercontent.com/commaai/openpilot/master/tools/sim/start_openpilot_docker.sh)"
```
3) Press 1 to engage openpilot
See the full [README](tools/sim/README.md)
You should also take a look at the tools directory in master: lots of tools you can use to replay driving data, test, and develop openpilot from your PC.
Community and Contributing
------
openpilot is developed by [comma](https://comma.ai/) and by users like you. We welcome both pull requests and issues on [GitHub](http://github.com/commaai/openpilot). Bug fixes and new car ports are encouraged.
You can add support for your car by following guides we have written for [Brand](https://blog.comma.ai/how-to-write-a-car-port-for-openpilot/) and [Model](https://blog.comma.ai/openpilot-port-guide-for-toyota-models/) ports. Generally, a car with adaptive cruise control and lane keep assist is a good candidate. [Join our Discord](https://discord.comma.ai) to discuss car ports: most car makes have a dedicated channel.
Want to get paid to work on openpilot? [comma is hiring](https://comma.ai/jobs/).
And [follow us on Twitter](https://twitter.com/comma_ai).
Directory Structure
------
.
├── cereal # The messaging spec and libs used for all logs
├── common # Library like functionality we've developed here
├── installer/updater # Manages updates of NEOS
├── opendbc # Files showing how to interpret data from cars
├── panda # Code used to communicate on CAN
├── phonelibs # External libraries
├── pyextra # Extra python packages not shipped in NEOS
└── selfdrive # Code needed to drive the car
├── assets # Fonts, images, and sounds for UI
├── athena # Allows communication with the app
├── boardd # Daemon to talk to the board
├── camerad # Driver to capture images from the camera sensors
├── car # Car specific code to read states and control actuators
├── common # Shared C/C++ code for the daemons
├── controls # Planning and controls
├── debug # Tools to help you debug and do car ports
├── locationd # Precise localization and vehicle parameter estimation
├── logcatd # Android logcat as a service
├── loggerd # Logger and uploader of car data
├── modeld # Driving and monitoring model runners
├── proclogd # Logs information from proc
├── sensord # IMU interface code
├── test # Unit tests, system tests, and a car simulator
└── ui # The UI
Licensing
------
openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.
Any user of this software shall indemnify and hold harmless comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys’ fees and costs) which arise out of, relate to or result from any use of this software by user.
**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT.
YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS.
NO WARRANTY EXPRESSED OR IMPLIED.**
---
<img src="https://d1qb2nb5cznatu.cloudfront.net/startups/i/1061157-bc7e9bf3b246ece7322e6ffe653f6af8-medium_jpg.jpg?buster=1458363130" width="75"></img> <img src="https://cdn-images-1.medium.com/max/1600/1*C87EjxGeMPrkTuVRVWVg4w.png" width="225"></img>
[](https://github.com/commaai/openpilot/actions)
[](https://lgtm.com/projects/g/commaai/openpilot/alerts/)
[](https://lgtm.com/projects/g/commaai/openpilot/context:python)
[](https://lgtm.com/projects/g/commaai/openpilot/context:cpp)
[](https://codecov.io/gh/commaai/openpilot)
================================================
FILE: README.md
================================================
Licensing
------
xnxpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.
Any user of this software shall indemnify and hold harmless Rick Lan, dragonpilot, comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys’ fees and costs) which arise out of, relate to or result from any use of this software by user.
***THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT. YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS. NO WARRANTY EXPRESSED OR IMPLIED.***
---
Table of Contents
------
* [What is xnxpilot?](#what-is-xnxpilot)
* [Showcase](#showcase)
* [Checklist](#checklist)
* [Hardware requirement](#hardware-requirement)
* [Software requirement](#software-requirement)
* [Hardware assimbly](#hardware-assembly)
* [Installation](#installation)
* [Credits](#credits)
* [Notes](#notes)
---
What is xnxpilot?
------
xnxpilot (Xavier NX Pilot) is an open source driver assistance system based on [dragonpilot](http://github.com/dragonpilot-community/dragonpilot) and [openpilot](http://github.com/commaai/openpilot), running on a NVIDIA Jetson Xavier NX platform instead of a qualcomm 821 mobile phone.
If you would like to run it with minimal changes to openpilot, please see the example in "doc" branch, based on openpilot 0.8.4
---
Showcase
------
Simulation:
<table>
<tr>
<td><a href="https://youtu.be/ubxSSLWqyt8" title="YouTube" rel="noopener"><img src="http://i3.ytimg.com/vi/ubxSSLWqyt8/hqdefault.jpg"></a></td>
</tr>
</table>
On road:
<table>
<tr>
<td><a href="https://youtu.be/RqoTT5m4Kp8" title="YouTube" rel="noopener"><img src="http://i3.ytimg.com/vi/RqoTT5m4Kp8/hqdefault.jpg"></a></td>
</tr>
</table>
Running on dragonpilot 0.8:
<table>
<tr>
<td><a href="https://youtu.be/o2pm8bAJvAM" title="YouTube" rel="noopener"><img src="http://i3.ytimg.com/vi/o2pm8bAJvAM/hqdefault.jpg"></a></td>
<td><a href="https://youtu.be/GEr-K3D3sDU" title="YouTube" rel="noopener"><img src="http://i3.ytimg.com/vi/GEr-K3D3sDU/hqdefault.jpg"></a></td>
</tr>
</table>
---
Checklist
------
- [x] Create build scripts
- [x] Add patch samples / tutorials.
- [x] On road lateral control tests.
- [ ] On road longitudinal control tests.
- [ ] Add IMU sensor to improve GPS accuracy.
- [ ] Tuning. (WIP)
---
Hardware Requirement
------
- [Nvidia Jetson Xavier NX](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-xavier-nx/)
- 32GB+ microsd card (UHS 3 speed minimum)
- [Arducam IMX 477](https://www.amazon.com/gp/product/B08F743RGG/)
- [comma.ai Black Panda](https://comma.ai/shop/products/panda) (or white/grey panda but require more code customization.)
- (Optional) [comma.ai Windshield mount](https://github.com/commaai/neo/tree/master/case/eon)
- (Optional) [GoPro flat adhesive mount](https://www.amazon.com/AFAITH-Adhesive-Mounts-GoPro-Camera/dp/B00BUD6LPY/)
- (Optional) [Waveshare 4.3" IPS Touchscreen](https://www.amazon.com.au/gp/product/B0852NW9FM/)
- (Optional) [DCDZ Jetson Xavier NX Carrier Board NCB00](https://item.taobao.com/item.htm?ft=t&id=613984388047)
- (Optional) [CSI to HDMI Extension Module](https://www.amazon.com/gp/product/B06XDNBM63/)
- (Optional) Targus notebook charger for car.
---
Software Requirement
------
- [NVIDIA JetPack 4.6](https://developer.nvidia.com/jetpack-sdk-46)
---
Hardware assembly
------
It is important to know that your camera needs **firmly attached** onto your windshield, any small movement to the camera while driving may result dangerous steering/acceleration.
I highly recommended to 3D print those commaai windshield mount (use with gopro mount) and use it to mount your camera, 24 degree one will do the job.
---
Installation
------
1) [Install ubuntu 18.04 / Jetpack 4.6 on to sdcard](https://developer.nvidia.com/embedded/learn/get-started-jetson-xavier-nx-devkit)
2) Insert your sd card to your jetson, have camera connect to CAM0, boot up, use the following configuration (installer will use those values to set up the device):
- username: **comma**
- password: **comma**
- hostname: **tici**
- mode: **20W 6 cores**
3) Once installation finished, **SSH into the device** and continue the rest of the processes.
4) run:
- `sudo /opt/nvidia/jetson-io/jetson-io.py`
- select `Configure Jetson Nano CSI Connector` > `Configure for compatible hardware` > `Camera IMX477 Dual` > `Save pin changes` > `Save and exit without rebooting`.
5) clone this repo to your home directory (e.g. `cd ~/ && git clone https://github.com/efinilan/xnxpilot.git openpilot -b 0.8.9 --single-branch`)
6) run `cd ~/openpilot/jetson/ && sudo bash env_installer.py`
7) Take a rest, this will take around **1.5 hrs** to config your system and another **10 mins** to compile dragonpilot, depends on your internet connection.
8) Congradulations, you have dragonpilot running on your jetson.
---
Credits
------
- [Commaai Openpilot](https://github.com/commaai/openpiplot)
- [dragonpilot community](https://github.com/dragonpilot-community/dragonpilot/)
- [RetroPilot Community](https://discord.gg/fGUuASVZKg)
- [Unofficial OpenPilot Community](https://discord.gg/Mrf8FwfWSr)
---
Notes
------
#### set_core_affinity ####
Jetson Xavier NX has 6 cores running at 1.9 GHz, here is what I've defined:
0 = camerad
1 = modeld
2 = boardd
3 = controlsd
4 = plannerd / radard
This will spread processes other CPU cores.
================================================
FILE: RELEASES.md
================================================
Version 0.8.9 (2021-09-14)
========================
* Improved fan control on comma three
* AGNOS 1.5: improved stability
* Honda e 2020 support
Version 0.8.8 (2021-08-27)
========================
* New driving model with improved laneless performance
* Trained on 5000+ hours of diverse driving data from 3000+ users in 40+ countries
* Better anti-cheating methods during simulator training ensure the model hugs less when in laneless mode
* All new desire ground-truthing stack makes the model better at lane changes
* New driver monitoring model: improved performance on comma three
* NEOS 18 for comma two: update packages
* AGNOS 1.3 for comma three: fix display init at high temperatures
* Improved auto-exposure on comma three
* Improved longitudinal control on Honda Nidec cars
* Hyundai Kona Hybrid 2020 support thanks to haram-KONA!
* Hyundai Sonata Hybrid 2021 support thanks to Matt-Wash-Burn!
* Kia Niro Hybrid 2021 support thanks to tetious!
Version 0.8.7 (2021-07-31)
========================
* comma three support!
* Navigation alpha for the comma three!
* Volkswagen T-Cross 2021 support thanks to jyoung8607!
Version 0.8.6 (2021-07-21)
========================
* Revamp lateral and longitudinal planners
* Refactor planner output API to be more readable and verbose
* Planners now output desired trajectories for speed, acceleration, curvature, and curvature rate
* Use MPC for longitudinal planning when no lead car is present, makes accel and decel smoother
* Remove "CHECK DRIVER FACE VISIBILITY" warning
* Fixed cruise fault on some TSS2.5 Camrys and international Toyotas
* Hyundai Elantra Hybrid 2021 support thanks to tecandrew!
* Hyundai Ioniq PHEV 2020 support thanks to YawWashout!
* Kia Niro Hybrid 2019 support thanks to jyoung8607!
* Škoda Octavia RS 2016 support thanks to jyoung8607!
* Toyota Alphard 2020 support thanks to belm0!
* Volkswagen Golf SportWagen 2015 support thanks to jona96!
* Volkswagen Touran 2017 support thanks to jyoung8607!
Version 0.8.5 (2021-06-11)
========================
* NEOS update: improved reliability and stability with better voltage regulator configuration
* Smart model-based Forward Collision Warning
* CAN-based fingerprinting moved behind community features toggle
* Improved longitudinal control on Toyotas with a comma pedal
* Improved auto-brightness using road-facing camera
* Added "Software" settings page with updater controls
* Audi Q2 2018 support thanks to jyoung8607!
* Hyundai Elantra 2021 support thanks to CruiseBrantley!
* Lexus UX Hybrid 2019-2020 support thanks to brianhaugen2!
* Toyota Avalon Hybrid 2019 support thanks to jbates9011!
* SEAT Leon 2017 & 2020 support thanks to jyoung8607!
* Škoda Octavia 2015 & 2019 support thanks to jyoung8607!
Version 0.8.4 (2021-05-17)
========================
* Delay controls start until system is ready
* Fuzzy car identification, enabled with Community Features toggle
* Localizer optimized for increased precision and less CPU usage
* Retuned lateral control to be more aggressive when model is confident
* Toyota Mirai 2021 support
* Lexus NX 300 2020 support thanks to goesreallyfast!
* Volkswagen Atlas 2018-19 support thanks to jyoung8607!
Version 0.8.3 (2021-04-01)
========================
* New model
* Trained on new diverse dataset from 2000+ users from 30+ countries
* Trained with improved segnet from the comma-pencil community project
* 🥬 Dramatically improved end-to-end lateral performance 🥬
* Toggle added to disable the use of lanelines
* NEOS update: update packages and support for new UI
* New offroad UI based on Qt
* Default SSH key only used for setup
* Kia Ceed 2019 support thanks to ZanZaD13!
* Kia Seltos 2021 support thanks to speedking456!
* Added support for many Volkswagen and Škoda models thanks to jyoung8607!
Version 0.8.2 (2021-02-26)
========================
* Use model points directly in MPC (no more polyfits), making lateral planning more accurate
* Use model heading prediction for smoother lateral control
* Smarter actuator delay compensation
* Improve qcamera resolution for improved video in explorer and connect
* Adjust maximum engagement speed to better fit the model's training distribution
* New driver monitoring model trained with 3x more diverse data
* Improved face detection with masks
* More predictable DM alerts when visibility is bad
* Rewritten video streaming between openpilot processes
* Improved longitudinal tuning on TSS2 Corolla and Rav4 thanks to briskspirit!
* Audi A3 2015 and 2017 support thanks to keeleysam!
* Nissan Altima 2020 support thanks to avolmensky!
* Lexus ES Hybrid 2018 support thanks to TheInventorMan!
* Toyota Camry Hybrid 2021 support thanks to alancyau!
Version 0.8.1 (2020-12-21)
========================
* Original EON is deprecated, upgrade to comma two
* Better model performance in heavy rain
* Better lane positioning in turns
* Fixed bug where model would cut turns on empty roads at night
* Fixed issue where some Toyotas would not completely stop thanks to briskspirit!
* Toyota Camry 2021 with TSS2.5 support
* Hyundai Ioniq Electric 2020 support thanks to baldwalker!
Version 0.8.0 (2020-11-30)
========================
* New driving model: fully 3D and improved cut-in detection
* UI draws 2 road edges, 4 lanelines and paths in 3D
* Major fixes to cut-in detection for openpilot longitudinal
* Grey panda is no longer supported, upgrade to comma two or black panda
* Lexus NX 2018 support thanks to matt12eagles!
* Kia Niro EV 2020 support thanks to nickn17!
* Toyota Prius 2021 support thanks to rav4kumar!
* Improved lane positioning with uncertain lanelines, wide lanes and exits
* Improved lateral control for Prius and Subaru
Version 0.7.10 (2020-10-29)
========================
* Grey panda is deprecated, upgrade to comma two or black panda
* NEOS update: update to Python 3.8.2 and lower CPU frequency
* Improved thermals due to reduced CPU frequency
* Update SNPE to 1.41.0
* Reduced offroad power consumption
* Various system stability improvements
* Acura RDX 2020 support thanks to csouers!
Version 0.7.9 (2020-10-09)
========================
* Improved car battery power management
* Improved updater robustness
* Improved realtime performance
* Reduced UI and modeld lags
* Increased torque on 2020 Hyundai Sonata and Palisade
Version 0.7.8 (2020-08-19)
========================
* New driver monitoring model: improved face detection and better compatibility with sunglasses
* Download NEOS operating system updates in the background
* Improved updater reliability and responsiveness
* Hyundai Kona 2020, Veloster 2019, and Genesis G70 2018 support thanks to xps-genesis!
Version 0.7.7 (2020-07-20)
========================
* White panda is no longer supported, upgrade to comma two or black panda
* Improved vehicle model estimation using high precision localizer
* Improved thermal management on comma two
* Improved autofocus for road-facing camera
* Improved noise performance for driver-facing camera
* Block lane change start using blindspot monitor on select Toyota, Hyundai, and Subaru
* Fix GM ignition detection
* Code cleanup and smaller release sizes
* Hyundai Sonata 2020 promoted to officially supported car
* Hyundai Ioniq Electric Limited 2019 and Ioniq SE 2020 support thanks to baldwalker!
* Subaru Forester 2019 and Ascent 2019 support thanks to martinl!
Version 0.7.6.1 (2020-06-16)
========================
* Hotfix: update kernel on some comma twos (orders #8570-#8680)
Version 0.7.6 (2020-06-05)
========================
* White panda is deprecated, upgrade to comma two or black panda
* 2017 Nissan X-Trail, 2018-19 Leaf and 2019 Rogue support thanks to avolmensky!
* 2017 Mazda CX-5 support in dashcam mode thanks to Jafaral!
* Huge CPU savings in modeld by using thneed!
* Lots of code cleanup and refactors
Version 0.7.5 (2020-05-13)
========================
* Right-Hand Drive support for both driving and driver monitoring!
* New driving model: improved at sharp turns and lead speed estimation
* New driver monitoring model: overall improvement on comma two
* Driver camera preview in settings to improve mounting position
* Added support for many Hyundai, Kia, Genesis models thanks to xx979xx!
* Improved lateral tuning for 2020 Toyota Rav 4 (hybrid)
Version 0.7.4 (2020-03-20)
========================
* New driving model: improved lane changes and lead car detection
* Improved driver monitoring model: improve eye detection
* Improved calibration stability
* Improved lateral control on some 2019 and 2020 Toyota Prius
* Improved lateral control on VW Golf: 20% more steering torque
* Fixed bug where some 2017 and 2018 Toyota C-HR would use the wrong steering angle sensor
* Support for Honda Insight thanks to theantihero!
* Code cleanup in car abstraction layers and ui
Version 0.7.3 (2020-02-21)
========================
* Support for 2020 Highlander thanks to che220!
* Support for 2018 Lexus NX 300h thanks to kengggg!
* Speed up ECU firmware query
* Fix bug where manager would sometimes hang after shutting down the car
Version 0.7.2 (2020-02-07)
========================
* ECU firmware version based fingerprinting for Honda & Toyota
* New driving model: improved path prediction during turns and lane changes and better lead speed tracking
* Improve driver monitoring under extreme lighting and add low accuracy alert
* Support for 2019 Rav4 Hybrid thanks to illumiN8i!
* Support for 2016, 2017 and 2020 Lexus RX thanks to illumiN8i!
* Support for 2020 Chrysler Pacifica Hybrid thanks to adhintz!
Version 0.7.1 (2020-01-20)
========================
* comma two support!
* Lane Change Assist above 45 mph!
* Replace zmq with custom messaging library, msgq!
* Supercombo model: calibration and driving models are combined for better lead estimate
* More robust updater thanks to jyoung8607! Requires NEOS update
* Improve low speed ACC tuning
Version 0.7 (2019-12-13)
========================
* Move to SCons build system!
* Add Lane Departure Warning (LDW) for all supported vehicles!
* NEOS update: increase wifi speed thanks to jyoung8607!
* Adaptive driver monitoring based on scene
* New driving model trained end-to-end: improve lane lines and lead detection
* Smarter torque limit alerts for all cars
* Improve GM longitudinal control: proper computations for 15Hz radar
* Move GM port, Toyota with DSU removed, comma pedal in community features; toggle switch required
* Remove upload over cellular toggle: only upload qlog and qcamera files if not on wifi
* Refactor Panda code towards ISO26262 and SIL2 compliancy
* Forward stock FCW for Honda Nidec
* Volkswagen port now standard: comma Harness intercepts stock camera
Version 0.6.6 (2019-11-05)
========================
* Volkswagen support thanks to jyoung8607!
* Toyota Corolla Hybrid with TSS 2.0 support thanks to u8511049!
* Lexus ES with TSS 2.0 support thanks to energee!
* Fix GM ignition detection and lock safety mode not required anymore
* Log panda firmware and dongle ID thanks to martinl!
* New driving model: improve path prediction and lead detection
* New driver monitoring model, 4x smaller and running on DSP
* Display an alert and don't start openpilot if panda has wrong firmware
* Fix bug preventing EON from terminating processes after a drive
* Remove support for Toyota giraffe without the 120Ohm resistor
Version 0.6.5 (2019-10-07)
========================
* NEOS update: upgrade to Python3 and new installer!
* comma Harness support!
* New driving model: improve path prediction
* New driver monitoring model: more accurate face and eye detection
* Redesign offroad screen to display updates and alerts
* Increase maximum allowed acceleration
* Prevent car 12V battery drain by cutting off EON charge after 3 days of no drive
* Lexus CT Hybrid support thanks to thomaspich!
* Louder chime for critical alerts
* Add toggle to switch to dashcam mode
* Fix "invalid vehicle params" error on DSU-less Toyota
Version 0.6.4 (2019-09-08)
========================
* Forward stock AEB for Honda Nidec
* Improve lane centering on banked roads
* Always-on forward collision warning
* Always-on driver monitoring, except for right hand drive countries
* Driver monitoring learns the user's normal driving position
* Honda Fit support thanks to energee!
* Lexus IS support
Version 0.6.3 (2019-08-12)
========================
* Alert sounds from EON: requires NEOS update
* Improve driver monitoring: eye tracking and improved awareness logic
* Improve path prediction with new driving model
* Improve lane positioning with wide lanes and exits
* Improve lateral control on RAV4
* Slow down for turns using model
* Open sourced regression test to verify outputs against reference logs
* Open sourced regression test to sanity check all car models
Version 0.6.2 (2019-07-29)
========================
* New driving model!
* Improve lane tracking with double lines
* Strongly improve stationary vehicle detection
* Strongly reduce cases of braking due to false leads
* Better lead tracking around turns
* Improve cut-in prediction by using neural network
* Improve lateral control on Toyota Camry and C-HR thanks to zorrobyte!
* Fix unintended openpilot disengagements on Jeep thanks to adhintz!
* Fix delayed transition to offroad when car is turned off
Version 0.6.1 (2019-07-21)
========================
* Remote SSH with comma prime and [ssh.comma.ai](https://ssh.comma.ai)
* Panda code Misra-c2012 compliance, tested against cppcheck coverage
* Lockout openpilot after 3 terminal alerts for driver distracted or unresponsive
* Toyota Sienna support thanks to wocsor!
Version 0.6 (2019-07-01)
========================
* New model, with double the pixels and ten times the temporal context!
* Car should not take exits when in the right lane
* openpilot uses only ~65% of the CPU (down from 75%)
* Routes visible in connect/explorer after only 0.2% is uploaded (qlogs)
* loggerd and sensord are open source, every line of openpilot is now open
* Panda safety code is MISRA compliant and ships with a signed version on release2
* New NEOS is 500MB smaller and has a reproducible usr/pipenv
* Lexus ES Hybrid support thanks to wocsor!
* Improve tuning for supported Toyota with TSS 2.0
* Various other stability improvements
Version 0.5.13 (2019-05-31)
==========================
* Reduce panda power consumption by 70%, down to 80mW, when car is off (not for GM)
* Reduce EON power consumption by 40%, down to 1100mW, when car is off
* Reduce CPU utilization by 20% and improve stability
* Temporarily remove mapd functionalities to improve stability
* Add openpilot record-only mode for unsupported cars
* Synchronize controlsd to boardd to reduce latency
* Remove panda support for Subaru giraffe
Version 0.5.12 (2019-05-16)
==========================
* Improve lateral control for the Prius and Prius Prime
* Compress logs before writing to disk
* Remove old driving data when storage reaches 90% full
* Fix small offset in following distance
* Various small CPU optimizations
* Improve offroad power consumption: require NEOS Update
* Add default speed limits for Estonia thanks to martinl!
* Subaru Crosstrek support thanks to martinl!
* Toyota Avalon support thanks to njbrown09!
* Toyota Rav4 with TSS 2.0 support thanks to wocsor!
* Toyota Corolla with TSS 2.0 support thanks to wocsor!
Version 0.5.11 (2019-04-17)
========================
* Add support for Subaru
* Reduce panda power consumption by 60% when car is off
* Fix controlsd lag every 6 minutes. This would sometimes cause disengagements
* Fix bug in controls with new angle-offset learner in MPC
* Reduce cpu consumption of ubloxd by rewriting it in C++
* Improve driver monitoring model and face detection
* Improve performance of visiond and ui
* Honda Passport 2019 support
* Lexus RX Hybrid 2019 support thanks to schomems!
* Improve road selection heuristic in mapd
* Add Lane Departure Warning to dashboard for Toyota thanks to arne182
Version 0.5.10 (2019-03-19)
========================
* Self-tuning vehicle parameters: steering offset, tire stiffness and steering ratio
* Improve longitudinal control at low speed when lead vehicle harshly decelerates
* Fix panda bug going unexpectedly in DCP mode when EON is connected
* Reduce white panda power consumption by 500mW when EON is disconnected by turning off WIFI
* New Driver Monitoring Model
* Support QR codes for login using comma connect
* Refactor comma pedal FW and use CRC-8 checksum algorithm for safety. Reflashing pedal is required.
Please see `#hw-pedal` on [discord](discord.comma.ai) for assistance updating comma pedal.
* Additional speed limit rules for Germany thanks to arne182
* Allow negative speed limit offsets
Version 0.5.9 (2019-02-10)
========================
* Improve calibration using a dedicated neural network
* Abstract planner in its own process to remove lags in controls process
* Improve speed limits with country/region defaults by road type
* Reduce mapd data usage with gzip thanks to eFiniLan
* Zip log files in the background to reduce disk usage
* Kia Optima support thanks to emmertex!
* Buick Regal 2018 support thanks to HOYS!
* Comma pedal support for Toyota thanks to wocsor! Note: tuning needed and not maintained by comma
* Chrysler Pacifica and Jeep Grand Cherokee support thanks to adhintz!
Version 0.5.8 (2019-01-17)
========================
* Open sourced visiond
* Auto-slowdown for upcoming turns
* Chrysler/Jeep/Fiat support thanks to adhintz!
* Honda Civic 2019 support thanks to csouers!
* Improve use of car display in Toyota thanks to arne182!
* No data upload when connected to Android or iOS hotspots and "Enable Upload Over Cellular" setting is off
* EON stops charging when 12V battery drops below 11.8V
Version 0.5.7 (2018-12-06)
========================
* Speed limit from OpenStreetMap added to UI
* Highlight speed limit when speed exceeds road speed limit plus a delta
* Option to limit openpilot max speed to road speed limit plus a delta
* Cadillac ATS support thanks to vntarasov!
* GMC Acadia support thanks to CryptoKylan!
* Decrease GPU power consumption
* NEOSv8 autoupdate
Version 0.5.6 (2018-11-16)
========================
* Refresh settings layout and add feature descriptions
* In Honda, keep stock camera on for logging and extra stock features; new openpilot giraffe setting is 0111!
* In Toyota, option to keep stock camera on for logging and extra stock features (e.g. AHB); 120Ohm resistor required on giraffe.
* Improve camera calibration stability
* More tuning to Honda positive accelerations
* Reduce brake pump use on Hondas
* Chevrolet Malibu support thanks to tylergets!
* Holden Astra support thanks to AlexHill!
Version 0.5.5 (2018-10-20)
========================
* Increase allowed Honda positive accelerations
* Fix sporadic unexpected braking when passing semi-trucks in Toyota
* Fix gear reading bug in Hyundai Elantra thanks to emmertex!
Version 0.5.4 (2018-09-25)
========================
* New Driving Model
* New Driver Monitoring Model
* Improve longitudinal mpc in mid-low speed braking
* Honda Accord hybrid support thanks to energee!
* Ship mpc binaries and sensibly reduce build time
* Calibration more stable
* More Hyundai and Kia cars supported thanks to emmertex!
* Various GM Volt improvements thanks to vntarasov!
Version 0.5.3 (2018-09-03)
========================
* Hyundai Santa Fe support!
* Honda Pilot 2019 support thanks to energee!
* Toyota Highlander support thanks to daehahn!
* Improve steering tuning for Honda Odyssey
Version 0.5.2 (2018-08-16)
========================
* New calibration: more accurate, a lot faster, open source!
* Enable orbd
* Add little endian support to CAN packer
* Fix fingerprint for Honda Accord 1.5T
* Improve driver monitoring model
Version 0.5.1 (2018-08-01)
========================
* Fix radar error on Civic sedan 2018
* Improve thermal management logic
* Alpha Toyota C-HR and Camry support!
* Auto-switch Driver Monitoring to 3 min counter when inaccurate
Version 0.5 (2018-07-11)
========================
* Driver Monitoring (beta) option in settings!
* Make visiond, loggerd and UI use less resources
* 60 FPS UI
* Better car parameters for most cars
* New sidebar with stats
* Remove Waze and Spotify to free up system resources
* Remove rear view mirror option
* Calibration 3x faster
Version 0.4.7.2 (2018-06-25)
==========================
* Fix loggerd lag issue
* No longer prompt for updates
* Mitigate right lane hugging for properly mounted EON (procedure on wiki)
Version 0.4.7.1 (2018-06-18)
==========================
* Fix Acura ILX steer faults
* Fix bug in mock car
Version 0.4.7 (2018-06-15)
==========================
* New model!
* GM Volt (and CT6 lateral) support!
* Honda Bosch lateral support!
* Improve actuator modeling to reduce lateral wobble
* Minor refactor of car abstraction layer
* Hack around orbd startup issue
Version 0.4.6 (2018-05-18)
==========================
* NEOSv6 required! Will autoupdate
* Stability improvements
* Fix all memory leaks
* Update C++ compiler to clang6
* Improve front camera exposure
Version 0.4.5 (2018-04-27)
==========================
* Release notes added to the update popup
* Improve auto shut-off logic to disallow empty battery
* Added onboarding instructions
* Include orbd, the first piece of new calibration algorithm
* Show remaining upload data instead of file numbers
* Fix UI bugs
* Fix memory leaks
Version 0.4.4 (2018-04-13)
==========================
* EON are flipped! Flip your EON's mount!
* Alpha Honda Ridgeline support thanks to energee!
* Support optional front camera recording
* Upload over cellular toggle now applies to all files, not just video
* Increase acceleration when closing lead gap
* User now prompted for future updates
* NEO no longer supported :(
Version 0.4.3.2 (2018-03-29)
============================
* Improve autofocus
* Improve driving when only one lane line is detected
* Added fingerprint for Toyota Corolla LE
* Fixed Toyota Corolla steer error
* Full-screen driving UI
* Improved path drawing
Version 0.4.3.1 (2018-03-19)
============================
* Improve autofocus
* Add check for MPC solution error
* Make first distracted warning visual only
Version 0.4.3 (2018-03-13)
==========================
* Add HDR and autofocus
* Update UI aesthetic
* Grey panda works in Waze
* Add alpha support for 2017 Honda Pilot
* Slight increase in acceleration response from stop
* Switch CAN sending to use CANPacker
* Fix pulsing acceleration regression on Honda
* Fix openpilot bugs when stock system is in use
* Change starting logic for chffrplus to use battery voltage
Version 0.4.2 (2018-02-05)
==========================
* Add alpha support for 2017 Lexus RX Hybrid
* Add alpha support for 2018 ACURA RDX
* Updated fingerprint to include Toyota Rav4 SE and Prius Prime
* Bugfixes for Acura ILX and Honda Odyssey
Version 0.4.1 (2018-01-30)
==========================
* Add alpha support for 2017 Toyota Corolla
* Add alpha support for 2018 Honda Odyssey with Honda Sensing
* Add alpha support for Grey Panda
* Refactored car abstraction layer to make car ports easier
* Increased steering torque limit on Honda CR-V by 30%
Version 0.4.0.2 (2018-01-18)
==========================
* Add focus adjustment slider
* Minor bugfixes
Version 0.4.0.1 (2017-12-21)
==========================
* New UI to match chffrplus
* Improved lateral control tuning to fix oscillations on Civic
* Add alpha support for 2017 Toyota Rav4 Hybrid
* Reduced CPU usage
* Removed unnecessary utilization of fan at max speed
* Minor bug fixes
Version 0.3.9 (2017-11-21)
==========================
* Add alpha support for 2017 Toyota Prius
* Improved longitudinal control using model predictive control
* Enable Forward Collision Warning
* Acura ILX now maintains openpilot engaged at standstill when brakes are applied
Version 0.3.8.2 (2017-10-30)
==========================
* Add alpha support for 2017 Toyota RAV4
* Smoother lateral control
* Stay silent if stock system is connected through giraffe
* Minor bug fixes
Version 0.3.7 (2017-09-30)
==========================
* Improved lateral control using model predictive control
* Improved lane centering
* Improved GPS
* Reduced tendency of path deviation near right side exits
* Enable engagement while the accelerator pedal is pressed
* Enable engagement while the brake pedal is pressed, when stationary and with lead vehicle within 5m
* Disable engagement when park brake or brake hold are active
* Fixed sporadic longitudinal pulsing in Civic
* Cleanups to vehicle interface
Version 0.3.6.1 (2017-08-15)
============================
* Mitigate low speed steering oscillations on some vehicles
* Include board steering check for CR-V
Version 0.3.6 (2017-08-08)
==========================
* Fix alpha CR-V support
* Improved GPS
* Fix display of target speed not always matching HUD
* Increased acceleration after stop
* Mitigated some vehicles driving too close to the right line
Version 0.3.5 (2017-07-30)
==========================
* Fix bug where new devices would not begin calibration
* Minor robustness improvements
Version 0.3.4 (2017-07-28)
==========================
* Improved model trained on more data
* Much improved controls tuning
* Performance improvements
* Bugfixes and improvements to calibration
* Driving log can play back video
* Acura only: system now stays engaged below 25mph as long as brakes are applied
Version 0.3.3 (2017-06-28)
===========================
* Improved model trained on more data
* Alpha CR-V support thanks to energee and johnnwvs!
* Using the opendbc project for DBC files
* Minor performance improvements
* UI update thanks to pjlao307
* Power off button
* 6% more torque on the Civic
Version 0.3.2 (2017-05-22)
===========================
* Minor stability bugfixes
* Added metrics and rear view mirror disable to settings
* Update model with more crowdsourced data
Version 0.3.1 (2017-05-17)
===========================
* visiond stability bugfix
* Add logging for angle and flashing
Version 0.3.0 (2017-05-12)
===========================
* Add CarParams struct to improve the abstraction layer
* Refactor visiond IPC to support multiple clients
* Add raw GPS and beginning support for navigation
* Improve model in visiond using crowdsourced data
* Add improved system logging to diagnose instability
* Rewrite baseui in React Native
* Moved calibration to the cloud
Version 0.2.9 (2017-03-01)
===========================
* Retain compatibility with NEOS v1
Version 0.2.8 (2017-02-27)
===========================
* Fix bug where frames were being dropped in minute 71
Version 0.2.7 (2017-02-08)
===========================
* Better performance and pictures at night
* Fix ptr alignment issue in boardd
* Fix brake error light, fix crash if too cold
Version 0.2.6 (2017-01-31)
===========================
* Fix bug in visiond model execution
Version 0.2.5 (2017-01-30)
===========================
* Fix race condition in manager
Version 0.2.4 (2017-01-27)
===========================
* OnePlus 3T support
* Enable installation as NEOS app
* Various minor bugfixes
Version 0.2.3 (2017-01-11)
===========================
* Reduce space usage by 80%
* Add better logging
* Add Travis CI
Version 0.2.2 (2017-01-10)
===========================
* Board triggers started signal on CAN messages
* Improved autoexposure
* Handle out of space, improve upload status
Version 0.2.1 (2016-12-14)
===========================
* Performance improvements, removal of more numpy
* Fix boardd process priority
* Make counter timer reset on use of steering wheel
Version 0.2 (2016-12-12)
=========================
* Car/Radar abstraction layers have shipped, see cereal/car.capnp
* controlsd has been refactored
* Shipped plant model and testing maneuvers
* visiond exits more gracefully now
* Hardware encoder in visiond should always init
* ui now turns off the screen after 30 seconds
* Switch to openpilot release branch for future releases
* Added preliminary Docker container to run tests on PC
Version 0.1 (2016-11-29)
=========================
* Initial release of openpilot
* Adaptive cruise control is working
* Lane keep assist is working
* Support for Acura ILX 2016 with AcuraWatch Plus
* Support for Honda Civic 2016 Touring Edition
================================================
FILE: SAFETY.md
================================================
openpilot Safety
======
openpilot is an Adaptive Cruise Control (ACC) and Automated Lane Centering (ALC) system.
Like other ACC and ALC systems, openpilot is a failsafe passive system and it requires the
driver to be alert and to pay attention at all times.
In order to enforce driver alertness, openpilot includes a driver monitoring feature
that alerts the driver when distracted.
However, even with an attentive driver, we must make further efforts for the system to be
safe. We repeat, **driver alertness is necessary, but not sufficient, for openpilot to be
used safely** and openpilot is provided with no warranty of fitness for any purpose.
openpilot is developed in good faith to be compliant with FMVSS requirements and to follow
industry standards of safety for Level 2 Driver Assistance Systems. In particular, we observe
ISO26262 guidelines, including those from [pertinent documents](https://www.nhtsa.gov/sites/nhtsa.dot.gov/files/documents/13498a_812_573_alcsystemreport.pdf)
released by NHTSA. In addition, we impose strict coding guidelines (like [MISRA C : 2012](https://www.misra.org.uk/what-is-misra/))
on parts of openpilot that are safety relevant. We also perform software-in-the-loop,
hardware-in-the-loop and in-vehicle tests before each software release.
Following Hazard and Risk Analysis and FMEA, at a very high level, we have designed openpilot
ensuring two main safety requirements.
1. The driver must always be capable to immediately retake manual control of the vehicle,
by stepping on either pedal or by pressing the cancel button.
2. The vehicle must not alter its trajectory too quickly for the driver to safely
react. This means that while the system is engaged, the actuators are constrained
to operate within reasonable limits.
For additional safety implementation details, refer to [panda safety model](https://github.com/commaai/panda#safety-model). For vehicle specific implementation of the safety concept, refer to [panda/board/safety/](https://github.com/commaai/panda/tree/master/board/safety).
**Extra note**: comma.ai strongly discourages the use of openpilot forks with safety code either missing or
not fully meeting the above requirements.
================================================
FILE: SConstruct
================================================
import os
import shutil
import subprocess
import sys
import sysconfig
import platform
import numpy as np
TICI = os.path.isfile('/TICI')
JETSON = os.path.isfile('/JETSON')
Decider('MD5-timestamp')
AddOption('--test',
action='store_true',
help='build test files')
AddOption('--setup',
action='store_true',
help='build setup and installer files')
AddOption('--kaitai',
action='store_true',
help='Regenerate kaitai struct parsers')
AddOption('--asan',
action='store_true',
help='turn on ASAN')
AddOption('--ubsan',
action='store_true',
help='turn on UBSan')
AddOption('--clazy',
action='store_true',
help='build with clazy')
AddOption('--compile_db',
action='store_true',
help='build clang compilation database')
AddOption('--mpc-generate',
action='store_true',
help='regenerates the mpc sources')
AddOption('--snpe',
action='store_true',
help='use SNPE on PC')
AddOption('--external-sconscript',
action='store',
metavar='FILE',
dest='external_sconscript',
help='add an external SConscript to the build')
AddOption('--no-thneed',
action='store_true',
dest='no_thneed',
help='avoid using thneed')
real_arch = arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
if platform.system() == "Darwin":
arch = "Darwin"
if arch == "aarch64" and TICI:
arch = "larch64"
USE_WEBCAM = os.getenv("USE_WEBCAM") is not None
USE_MIPI = os.getenv("USE_MIPI") is not None
if arch == "aarch64" and JETSON:
arch = "jarch64"
lenv = {
"PATH": os.environ['PATH'],
}
if arch == "aarch64" or arch == "larch64":
lenv["LD_LIBRARY_PATH"] = '/data/data/com.termux/files/usr/lib'
if arch == "aarch64":
# android
lenv["ANDROID_DATA"] = os.environ['ANDROID_DATA']
lenv["ANDROID_ROOT"] = os.environ['ANDROID_ROOT']
cpppath = [
"#phonelibs/opencl/include",
]
libpath = [
"/usr/local/lib",
"/usr/lib",
"/system/vendor/lib64",
"/system/comma/usr/lib",
"#phonelibs/nanovg",
]
if arch == "larch64":
libpath += [
"#phonelibs/snpe/larch64",
"#phonelibs/libyuv/larch64/lib",
"/usr/lib/aarch64-linux-gnu"
]
cpppath += [
"#selfdrive/camerad/include",
]
cflags = ["-DQCOM2", "-mcpu=cortex-a57"]
cxxflags = ["-DQCOM2", "-mcpu=cortex-a57"]
rpath = ["/usr/local/lib"]
else:
libpath += [
"#phonelibs/snpe/aarch64",
"#phonelibs/libyuv/lib",
"/system/vendor/lib64",
"#phonelibs/mapbox-gl-native-qt/aarch64",
]
cflags = ["-DQCOM", "-D_USING_LIBCXX", "-mcpu=cortex-a57"]
cxxflags = ["-DQCOM", "-D_USING_LIBCXX", "-mcpu=cortex-a57"]
rpath = []
else:
cflags = []
cxxflags = []
cpppath = []
rpath = []
if arch == "jarch64":
libpath = [
"#phonelibs/libyuv/larch64/lib",
"/usr/lib/aarch64-linux-gnu",
"#selfdrive/common",
"/usr/lib",
"/usr/local/lib",
"/usr/local/pocl/lib",
"#phonelibs/mapbox-gl-native-qt/jarch64",
]
cflags = ["-DXNX", "-march=armv8.2-a"]
cxxflags = ["-DXNX", "-march=armv8.2-a"]
rpath += ["/usr/local/lib"]
elif arch == "Darwin":
yuv_dir = "mac" if real_arch != "arm64" else "mac_arm64"
libpath = [
f"#phonelibs/libyuv/{yuv_dir}/lib",
"/usr/local/lib",
"/opt/homebrew/lib",
"/usr/local/opt/openssl/lib",
"/opt/homebrew/opt/openssl/lib",
"/System/Library/Frameworks/OpenGL.framework/Libraries",
]
cflags += ["-DGL_SILENCE_DEPRECATION"]
cxxflags += ["-DGL_SILENCE_DEPRECATION"]
cpppath += [
"/opt/homebrew/include",
"/usr/local/opt/openssl/include",
"/opt/homebrew/opt/openssl/include"
]
else:
libpath = [
"#phonelibs/snpe/x86_64-linux-clang",
"#phonelibs/libyuv/x64/lib",
"#phonelibs/mapbox-gl-native-qt/x86_64",
"#cereal",
"#selfdrive/common",
"/usr/lib",
"/usr/local/lib",
]
if arch != "jarch64":
rpath += ["phonelibs/snpe/x86_64-linux-clang"]
rpath += [
"cereal",
"selfdrive/common"
]
# allows shared libraries to work globally
rpath = [os.path.join(os.getcwd(), x) for x in rpath]
if GetOption('asan'):
ccflags = ["-fsanitize=address", "-fno-omit-frame-pointer"]
ldflags = ["-fsanitize=address"]
elif GetOption('ubsan'):
ccflags = ["-fsanitize=undefined"]
ldflags = ["-fsanitize=undefined"]
else:
ccflags = []
ldflags = []
# no --as-needed on mac linker
if arch != "Darwin":
ldflags += ["-Wl,--as-needed"]
# Enable swaglog include in submodules
cflags += ["-DSWAGLOG"]
cxxflags += ["-DSWAGLOG"]
# change pythonpath to this
lenv["PYTHONPATH"] = Dir("#").path
env = Environment(
ENV=lenv,
CCFLAGS=[
"-g",
"-fPIC",
"-O2",
"-Wunused",
"-Werror",
"-Wno-unknown-warning-option",
"-Wno-deprecated-register",
"-Wno-register",
"-Wno-inconsistent-missing-override",
"-Wno-c99-designator",
"-Wno-reorder-init-list",
] + cflags + ccflags,
CPPPATH=cpppath + [
"#",
"#phonelibs/catch2/include",
"#phonelibs/bzip2",
"#phonelibs/libyuv/include",
"#phonelibs/openmax/include",
"#phonelibs/json11",
"#phonelibs/curl/include",
"#phonelibs/libgralloc/include",
"#phonelibs/android_frameworks_native/include",
"#phonelibs/android_hardware_libhardware/include",
"#phonelibs/android_system_core/include",
"#phonelibs/linux/include",
"#phonelibs/snpe/include",
"#phonelibs/mapbox-gl-native-qt/include",
"#phonelibs/nanovg",
"#phonelibs/qrcode",
"#phonelibs",
"#cereal",
"#opendbc/can",
],
CC='clang',
CXX='clang++',
LINKFLAGS=ldflags,
RPATH=rpath,
CFLAGS=["-std=gnu11"] + cflags,
CXXFLAGS=["-std=c++1z"] + cxxflags,
LIBPATH=libpath + [
"#cereal",
"#phonelibs",
"#opendbc/can",
"#selfdrive/boardd",
"#selfdrive/common",
],
CYTHONCFILESUFFIX=".cpp",
COMPILATIONDB_USE_ABSPATH=True,
tools=["default", "cython", "compilation_db"],
)
if GetOption('compile_db'):
env.CompilationDatabase('compile_commands.json')
# Setup cache dir
cache_dir = '/data/scons_cache' if TICI else '/tmp/scons_cache'
CacheDir(cache_dir)
Clean(["."], cache_dir)
node_interval = 5
node_count = 0
def progress_function(node):
global node_count
node_count += node_interval
sys.stderr.write("progress: %d\n" % node_count)
if os.environ.get('SCONS_PROGRESS'):
Progress(progress_function, interval=node_interval)
SHARED = False
def abspath(x):
if arch == 'aarch64':
pth = os.path.join("/data/pythonpath", x[0].path)
env.Depends(pth, x)
return File(pth)
else:
# rpath works elsewhere
return x[0].path.rsplit("/", 1)[1][:-3]
# Cython build enviroment
py_include = sysconfig.get_paths()['include']
envCython = env.Clone()
envCython["CPPPATH"] += [py_include, np.get_include()]
envCython["CCFLAGS"] += ["-Wno-#warnings", "-Wno-deprecated-declarations"]
envCython["LIBS"] = []
if arch == "Darwin":
envCython["LINKFLAGS"] = ["-bundle", "-undefined", "dynamic_lookup"]
elif arch == "aarch64":
envCython["LINKFLAGS"] = ["-shared"]
envCython["LIBS"] = [os.path.basename(py_include)]
else:
envCython["LINKFLAGS"] = ["-pthread", "-shared"]
Export('envCython')
# Qt build environment
qt_env = env.Clone()
qt_modules = ["Widgets", "Gui", "Core", "Network", "Concurrent", "Multimedia", "Quick", "Qml", "QuickWidgets", "Location", "Positioning"]
if arch != "aarch64":
qt_modules += ["DBus"]
qt_libs = []
if arch == "Darwin":
if real_arch == "arm64":
qt_env['QTDIR'] = "/opt/homebrew/opt/qt@5"
else:
qt_env['QTDIR'] = "/usr/local/opt/qt@5"
qt_dirs = [
os.path.join(qt_env['QTDIR'], "include"),
]
qt_dirs += [f"{qt_env['QTDIR']}/include/Qt{m}" for m in qt_modules]
qt_env["LINKFLAGS"] += ["-F" + os.path.join(qt_env['QTDIR'], "lib")]
qt_env["FRAMEWORKS"] += [f"Qt{m}" for m in qt_modules] + ["OpenGL"]
elif arch == "aarch64":
qt_env['QTDIR'] = "/system/comma/usr"
qt_dirs = [
f"/system/comma/usr/include/qt",
]
qt_dirs += [f"/system/comma/usr/include/qt/Qt{m}" for m in qt_modules]
qt_libs = [f"Qt5{m}" for m in qt_modules]
qt_libs += ['EGL', 'GLESv3', 'c++_shared']
else:
qt_env['QTDIR'] = "/usr"
qt_dirs = [
f"/usr/include/{real_arch}-linux-gnu/qt5",
f"/usr/include/{real_arch}-linux-gnu/qt5/QtGui/5.12.8/QtGui",
]
qt_dirs += [f"/usr/include/{real_arch}-linux-gnu/qt5/Qt{m}" for m in qt_modules]
qt_libs = [f"Qt5{m}" for m in qt_modules]
if arch == "larch64" or arch == "jarch64":
qt_libs += ["GLESv2", "wayland-client"]
elif arch != "Darwin":
qt_libs += ["GL"]
qt_env.Tool('qt')
qt_env['CPPPATH'] += qt_dirs + ["#selfdrive/ui/qt/"]
qt_flags = [
"-D_REENTRANT",
"-DQT_NO_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_GUI_LIB",
"-DQT_QUICK_LIB",
"-DQT_QUICKWIDGETS_LIB",
"-DQT_QML_LIB",
"-DQT_CORE_LIB",
"-DQT_MESSAGELOGCONTEXT",
]
qt_env['CXXFLAGS'] += qt_flags
qt_env['LIBPATH'] += ['#selfdrive/ui']
qt_env['LIBS'] = qt_libs
if GetOption("clazy"):
checks = [
"level0",
"level1",
"no-range-loop",
"no-non-pod-global-static",
]
qt_env['CXX'] = 'clazy'
qt_env['ENV']['CLAZY_IGNORE_DIRS'] = qt_dirs[0]
qt_env['ENV']['CLAZY_CHECKS'] = ','.join(checks)
Export('env', 'qt_env', 'arch', 'real_arch', 'SHARED', 'USE_WEBCAM', 'USE_MIPI')
SConscript(['selfdrive/common/SConscript'])
Import('_common', '_gpucommon', '_gpu_libs')
if SHARED:
common, gpucommon = abspath(common), abspath(gpucommon)
else:
common = [_common, 'json11']
gpucommon = [_gpucommon] + _gpu_libs
Export('common', 'gpucommon')
# cereal and messaging are shared with the system
SConscript(['cereal/SConscript'])
if SHARED:
cereal = abspath([File('cereal/libcereal_shared.so')])
messaging = abspath([File('cereal/libmessaging_shared.so')])
else:
cereal = [File('#cereal/libcereal.a')]
messaging = [File('#cereal/libmessaging.a')]
visionipc = [File('#cereal/libvisionipc.a')]
Export('cereal', 'messaging', 'visionipc')
# Build rednose library and ekf models
rednose_config = {
'generated_folder': '#selfdrive/locationd/models/generated',
'to_build': {
'live': ('#selfdrive/locationd/models/live_kf.py', True, ['live_kf_constants.h']),
'car': ('#selfdrive/locationd/models/car_kf.py', True, []),
},
}
if arch != "aarch64":
rednose_config['to_build'].update({
'gnss': ('#selfdrive/locationd/models/gnss_kf.py', True, []),
'loc_4': ('#selfdrive/locationd/models/loc_kf.py', True, []),
'pos_computer_4': ('#rednose/helpers/lst_sq_computer.py', False, []),
'pos_computer_5': ('#rednose/helpers/lst_sq_computer.py', False, []),
'feature_handler_5': ('#rednose/helpers/feature_handler.py', False, []),
'lane': ('#xx/pipeline/lib/ekf/lane_kf.py', True, []),
})
Export('rednose_config')
SConscript(['rednose/SConscript'])
# Build openpilot
SConscript(['cereal/SConscript'])
SConscript(['panda/board/SConscript'])
SConscript(['opendbc/can/SConscript'])
SConscript(['phonelibs/SConscript'])
SConscript(['common/SConscript'])
SConscript(['common/kalman/SConscript'])
SConscript(['common/transformations/SConscript'])
SConscript(['selfdrive/camerad/SConscript'])
SConscript(['selfdrive/modeld/SConscript'])
SConscript(['selfdrive/controls/lib/cluster/SConscript'])
SConscript(['selfdrive/controls/lib/lateral_mpc/SConscript'])
SConscript(['selfdrive/controls/lib/lead_mpc_lib/SConscript'])
SConscript(['selfdrive/controls/lib/longitudinal_mpc_lib/SConscript'])
SConscript(['selfdrive/boardd/SConscript'])
SConscript(['selfdrive/proclogd/SConscript'])
SConscript(['selfdrive/clocksd/SConscript'])
SConscript(['selfdrive/loggerd/SConscript'])
SConscript(['selfdrive/locationd/SConscript'])
if not os.path.isfile("/JETSON"):
SConscript(['selfdrive/sensord/SConscript'])
SConscript(['selfdrive/ui/SConscript'])
if arch != "Darwin":
SConscript(['selfdrive/logcatd/SConscript'])
external_sconscript = GetOption('external_sconscript')
if external_sconscript:
SConscript([external_sconscript])
================================================
FILE: cereal/.gitignore
================================================
gen
node_modules
package-lock.json
*.tmp
*.pyc
__pycache__
.*.swp
.*.swo
*.os
*.o
*.a
test_runner
libmessaging.*
libmessaging_shared.*
services.h
.sconsign.dblite
libcereal_shared.*
.mypy_cache/
catch2/
================================================
FILE: cereal/SConscript
================================================
Import('env', 'envCython', 'arch', 'common')
import shutil
cereal_dir = Dir('.')
gen_dir = Dir('gen')
messaging_dir = Dir('messaging')
# Build cereal
schema_files = ['log.capnp', 'car.capnp', 'legacy.capnp', 'dp.capnp']
env.Command(["gen/c/include/c++.capnp.h", "gen/c/include/java.capnp.h"], [], "mkdir -p " + gen_dir.path + "/c/include && touch $TARGETS")
env.Command([f'gen/cpp/{s}.c++' for s in schema_files] + [f'gen/cpp/{s}.h' for s in schema_files],
schema_files,
f"capnpc --src-prefix={cereal_dir.path} $SOURCES -o c++:{gen_dir.path}/cpp/")
if shutil.which('capnpc-java'):
env.Command(['gen/java/Car.java', 'gen/java/Log.java'],
schema_files,
f"capnpc $SOURCES --src-prefix={cereal_dir.path} -o java:{gen_dir.path}/java/")
# TODO: remove non shared cereal and messaging
cereal_objects = env.SharedObject([f'gen/cpp/{s}.c++' for s in schema_files])
env.Library('cereal', cereal_objects)
env.SharedLibrary('cereal_shared', cereal_objects)
# Build messaging
services_h = env.Command(['services.h'], ['services.py'], 'python3 ' + cereal_dir.path + '/services.py > $TARGET')
messaging_objects = env.SharedObject([
'messaging/messaging.cc',
'messaging/impl_zmq.cc',
'messaging/impl_msgq.cc',
'messaging/msgq.cc',
'messaging/socketmaster.cc',
])
messaging_lib = env.Library('messaging', messaging_objects)
Depends('messaging/impl_zmq.cc', services_h)
env.Program('messaging/bridge', ['messaging/bridge.cc'], LIBS=[messaging_lib, 'zmq', common])
Depends('messaging/bridge.cc', services_h)
envCython.Program('messaging/messaging_pyx.so', 'messaging/messaging_pyx.pyx', LIBS=envCython["LIBS"]+[messaging_lib, "zmq", common])
# Build Vision IPC
vipc_sources = [
'visionipc/ipc.cc',
'visionipc/visionipc_server.cc',
'visionipc/visionipc_client.cc',
'visionipc/visionbuf.cc',
]
if arch in ["aarch64", "larch64"]:
vipc_sources += ['visionipc/visionbuf_ion.cc']
else:
vipc_sources += ['visionipc/visionbuf_cl.cc']
vipc_objects = env.SharedObject(vipc_sources)
vipc = env.Library('visionipc', vipc_objects)
libs = envCython["LIBS"]+["OpenCL", "zmq", vipc, messaging_lib, common]
if arch == "aarch64":
libs += ["adreno_utils"]
if arch == "Darwin":
del libs[libs.index('OpenCL')]
envCython['FRAMEWORKS'] += ['OpenCL']
envCython.Program('visionipc/visionipc_pyx.so', 'visionipc/visionipc_pyx.pyx', LIBS=libs)
if GetOption('test'):
env.Program('messaging/test_runner', ['messaging/test_runner.cc', 'messaging/msgq_tests.cc'], LIBS=[messaging_lib, common])
env.Program('visionipc/test_runner', ['visionipc/test_runner.cc', 'visionipc/visionipc_tests.cc'], LIBS=[vipc, messaging_lib, 'zmq', 'pthread', 'OpenCL', common])
================================================
FILE: cereal/__init__.py
================================================
# pylint: skip-file
import os
import capnp
CEREAL_PATH = os.path.dirname(os.path.abspath(__file__))
capnp.remove_import_hook()
log = capnp.load(os.path.join(CEREAL_PATH, "log.capnp"))
car = capnp.load(os.path.join(CEREAL_PATH, "car.capnp"))
================================================
FILE: cereal/car.capnp
================================================
using Cxx = import "./include/c++.capnp";
$Cxx.namespace("cereal");
using Java = import "./include/java.capnp";
$Java.package("ai.comma.openpilot.cereal");
$Java.outerClassname("Car");
@0x8e2af1e708af8b8d;
# ******* events causing controls state machine transition *******
struct CarEvent @0x9b1657f34caf3ad3 {
name @0 :EventName;
# event types
enable @1 :Bool;
noEntry @2 :Bool;
warning @3 :Bool; # alerts presented only when enabled or soft disabling
userDisable @4 :Bool;
softDisable @5 :Bool;
immediateDisable @6 :Bool;
preEnable @7 :Bool;
permanent @8 :Bool; # alerts presented regardless of openpilot state
enum EventName @0xbaa8c5d505f727de {
canError @0;
steerUnavailable @1;
brakeUnavailable @2;
wrongGear @4;
doorOpen @5;
seatbeltNotLatched @6;
espDisabled @7;
wrongCarMode @8;
steerTempUnavailable @9;
reverseGear @10;
buttonCancel @11;
buttonEnable @12;
pedalPressed @13;
cruiseDisabled @14;
speedTooLow @17;
outOfSpace @18;
overheat @19;
calibrationIncomplete @20;
calibrationInvalid @21;
controlsMismatch @22;
pcmEnable @23;
pcmDisable @24;
noTarget @25;
radarFault @26;
brakeHold @28;
parkBrake @29;
manualRestart @30;
lowSpeedLockout @31;
plannerError @32;
joystickDebug @34;
steerTempUnavailableSilent @35;
resumeRequired @36;
preDriverDistracted @37;
promptDriverDistracted @38;
driverDistracted @39;
preDriverUnresponsive @43;
promptDriverUnresponsive @44;
driverUnresponsive @45;
belowSteerSpeed @46;
lowBattery @48;
vehicleModelInvalid @50;
accFaulted @51;
sensorDataInvalid @52;
commIssue @53;
tooDistracted @54;
posenetInvalid @55;
soundsUnavailable @56;
preLaneChangeLeft @57;
preLaneChangeRight @58;
laneChange @59;
communityFeatureDisallowed @62;
lowMemory @63;
stockAeb @64;
ldw @65;
carUnrecognized @66;
invalidLkasSetting @69;
speedTooHigh @70;
laneChangeBlocked @71;
relayMalfunction @72;
gasPressed @73;
stockFcw @74;
startup @75;
startupNoCar @76;
startupNoControl @77;
startupMaster @78;
startupFuzzyFingerprint @97;
startupNoFw @104;
fcw @79;
steerSaturated @80;
belowEngageSpeed @84;
noGps @85;
wrongCruiseMode @87;
modeldLagging @89;
deviceFalling @90;
fanMalfunction @91;
cameraMalfunction @92;
gpsMalfunction @94;
processNotRunning @95;
dashcamMode @96;
controlsInitializing @98;
usbError @99;
roadCameraError @100;
driverCameraError @101;
wideRoadCameraError @102;
localizerMalfunction @103;
highCpuUsage @105;
driverMonitorLowAccDEPRECATED @68;
radarCanErrorDEPRECATED @15;
radarCommIssueDEPRECATED @67;
gasUnavailableDEPRECATED @3;
dataNeededDEPRECATED @16;
modelCommIssueDEPRECATED @27;
ipasOverrideDEPRECATED @33;
geofenceDEPRECATED @40;
driverMonitorOnDEPRECATED @41;
driverMonitorOffDEPRECATED @42;
calibrationProgressDEPRECATED @47;
invalidGiraffeHondaDEPRECATED @49;
invalidGiraffeToyotaDEPRECATED @60;
internetConnectivityNeededDEPRECATED @61;
whitePandaUnsupportedDEPRECATED @81;
commIssueWarningDEPRECATED @83;
focusRecoverActiveDEPRECATED @86;
neosUpdateRequiredDEPRECATED @88;
modelLagWarningDEPRECATED @93;
startupOneplusDEPRECATED @82;
#dp
autoLaneChange @106;
manualSteeringRequired @107;
manualSteeringRequiredBlinkersOn @108;
leadCarMoving @109;
# timebomb assist
timebombWarn @110;
timebombBypassing @111;
timebombBypassed @112;
mapdAlert @113;
speedLimitActive @114;
speedLimitValueChange @115;
}
}
# ******* main car state @ 100hz *******
# all speeds in m/s
struct CarState {
events @13 :List(CarEvent);
# car speed
vEgo @1 :Float32; # best estimate of speed
aEgo @16 :Float32; # best estimate of acceleration
vEgoRaw @17 :Float32; # unfiltered speed from CAN sensors
yawRate @22 :Float32; # best estimate of yaw rate
standstill @18 :Bool;
wheelSpeeds @2 :WheelSpeeds;
# gas pedal, 0.0-1.0
gas @3 :Float32; # this is user + computer
gasPressed @4 :Bool; # this is user pedal only
# brake pedal, 0.0-1.0
brake @5 :Float32; # this is user pedal only
brakePressed @6 :Bool; # this is user pedal only
# steering wheel
steeringAngleDeg @7 :Float32;
steeringAngleOffsetDeg @37 :Float32; # Offset betweens sensors in case there multiple
steeringRateDeg @15 :Float32;
steeringTorque @8 :Float32; # TODO: standardize units
steeringTorqueEps @27 :Float32; # TODO: standardize units
steeringPressed @9 :Bool; # if the user is using the steering wheel
steeringRateLimited @29 :Bool; # if the torque is limited by the rate limiter
steerWarning @35 :Bool; # temporary steer unavailble
steerError @36 :Bool; # permanent steer error
stockAeb @30 :Bool;
stockFcw @31 :Bool;
espDisabled @32 :Bool;
# cruise state
cruiseState @10 :CruiseState;
# gear
gearShifter @14 :GearShifter;
# button presses
buttonEvents @11 :List(ButtonEvent);
leftBlinker @20 :Bool;
rightBlinker @21 :Bool;
genericToggle @23 :Bool;
# lock info
doorOpen @24 :Bool;
seatbeltUnlatched @25 :Bool;
canValid @26 :Bool;
# clutch (manual transmission only)
clutchPressed @28 :Bool;
# which packets this state came from
canMonoTimes @12: List(UInt64);
# blindspot sensors
leftBlindspot @33 :Bool; # Is there something blocking the left lane change
rightBlindspot @34 :Bool; # Is there something blocking the right lane change
# dp
lkMode @38 :Bool;
stopSteering @39 :Bool; # timebomb - stopSteering
engineRPM @40 :Float32;
cruiseActualEnabled @41 :Bool;
struct WheelSpeeds {
# optional wheel speeds
fl @0 :Float32;
fr @1 :Float32;
rl @2 :Float32;
rr @3 :Float32;
}
struct CruiseState {
enabled @0 :Bool;
speed @1 :Float32;
available @2 :Bool;
speedOffset @3 :Float32;
standstill @4 :Bool;
nonAdaptive @5 :Bool;
speedLimit @6 :Float32;
}
enum GearShifter {
unknown @0;
park @1;
drive @2;
neutral @3;
reverse @4;
sport @5;
low @6;
brake @7;
eco @8;
manumatic @9;
}
# send on change
struct ButtonEvent {
pressed @0 :Bool;
type @1 :Type;
enum Type {
unknown @0;
leftBlinker @1;
rightBlinker @2;
accelCruise @3;
decelCruise @4;
cancel @5;
altButton1 @6;
altButton2 @7;
altButton3 @8;
setCruise @9;
resumeCruise @10;
gapAdjustCruise @11;
}
}
errorsDEPRECATED @0 :List(CarEvent.EventName);
brakeLights @19 :Bool;
}
# ******* radar state @ 20hz *******
struct RadarData @0x888ad6581cf0aacb {
errors @0 :List(Error);
points @1 :List(RadarPoint);
# which packets this state came from
canMonoTimes @2 :List(UInt64);
enum Error {
canError @0;
fault @1;
wrongConfig @2;
}
# similar to LiveTracks
# is one timestamp valid for all? I think so
struct RadarPoint {
trackId @0 :UInt64; # no trackId reuse
# these 3 are the minimum required
dRel @1 :Float32; # m from the front bumper of the car
yRel @2 :Float32; # m
vRel @3 :Float32; # m/s
# these are optional and valid if they are not NaN
aRel @4 :Float32; # m/s^2
yvRel @5 :Float32; # m/s
# some radars flag measurements VS estimates
measured @6 :Bool;
}
}
# ******* car controls @ 100hz *******
struct CarControl {
# must be true for any actuator commands to work
enabled @0 :Bool;
active @7 :Bool;
actuators @6 :Actuators;
cruiseControl @4 :CruiseControl;
hudControl @5 :HUDControl;
struct Actuators {
# range from 0.0 - 1.0
gasDEPRECATED @0: Float32;
brakeDEPRECATED @1: Float32;
# range from -1.0 - 1.0
steer @2: Float32;
steeringAngleDeg @3: Float32;
accel @4: Float32; # m/s^2
longControlState @5: LongControlState;
enum LongControlState @0xe40f3a917d908282{
off @0;
pid @1;
stopping @2;
starting @3;
}
}
struct CruiseControl {
cancel @0: Bool;
override @1: Bool;
speedOverride @2: Float32;
accelOverride @3: Float32;
}
struct HUDControl {
speedVisible @0: Bool;
setSpeed @1: Float32;
lanesVisible @2: Bool;
leadVisible @3: Bool;
visualAlert @4: VisualAlert;
audibleAlert @5: AudibleAlert;
rightLaneVisible @6: Bool;
leftLaneVisible @7: Bool;
rightLaneDepart @8: Bool;
leftLaneDepart @9: Bool;
enum VisualAlert {
# these are the choices from the Honda
# map as good as you can for your car
none @0;
fcw @1;
steerRequired @2;
brakePressed @3;
wrongGear @4;
seatbeltUnbuckled @5;
speedTooHigh @6;
ldw @7;
}
enum AudibleAlert {
none @0;
chimeEngage @1;
chimeDisengage @2;
chimeError @3;
chimeWarning1 @4;
chimeWarning2 @5;
chimeWarningRepeat @6;
chimePrompt @7;
chimeWarning2Repeat @8;
}
}
gasDEPRECATED @1 :Float32;
brakeDEPRECATED @2 :Float32;
steeringTorqueDEPRECATED @3 :Float32;
}
# ****** car param ******
struct CarParams {
carName @0 :Text;
carFingerprint @1 :Text;
fuzzyFingerprint @55 :Bool;
enableGasInterceptor @2 :Bool;
pcmCruise @3 :Bool; # is openpilot's state tied to the PCM's cruise state?
enableDsu @5 :Bool; # driving support unit
enableApgs @6 :Bool; # advanced parking guidance system
enableBsm @56 :Bool; # blind spot monitoring
hasStockCamera @57 :Bool; # factory LKAS/LDW camera is present
minEnableSpeed @7 :Float32;
minSteerSpeed @8 :Float32;
maxSteeringAngleDeg @54 :Float32;
safetyModel @9 :SafetyModel;
safetyModelPassive @42 :SafetyModel = silent;
safetyParam @10 :Int16;
steerMaxBP @11 :List(Float32);
steerMaxV @12 :List(Float32);
gasMaxBPDEPRECATED @13 :List(Float32);
gasMaxVDEPRECATED @14 :List(Float32);
brakeMaxBPDEPRECATED @15 :List(Float32);
brakeMaxVDEPRECATED @16 :List(Float32);
# things about the car in the manual
mass @17 :Float32; # [kg] curb weight: all fluids no cargo
wheelbase @18 :Float32; # [m] distance from rear axle to front axle
centerToFront @19 :Float32; # [m] distance from center of mass to front axle
steerRatio @20 :Float32; # [] ratio of steering wheel angle to front wheel angle
steerRatioRear @21 :Float32; # [] ratio of steering wheel angle to rear wheel angle (usually 0)
# things we can derive
rotationalInertia @22 :Float32; # [kg*m2] body rotational inertia
tireStiffnessFront @23 :Float32; # [N/rad] front tire coeff of stiff
tireStiffnessRear @24 :Float32; # [N/rad] rear tire coeff of stiff
longitudinalTuning @25 :LongitudinalPIDTuning;
lateralParams @48 :LateralParams;
lateralTuning :union {
pid @26 :LateralPIDTuning;
indi @27 :LateralINDITuning;
lqr @40 :LateralLQRTuning;
}
steerLimitAlert @28 :Bool;
steerLimitTimer @47 :Float32; # time before steerLimitAlert is issued
vEgoStopping @29 :Float32; # Speed at which the car goes into stopping state
directAccelControl @30 :Bool; # Does the car have direct accel control or just gas/brake
stoppingControl @31 :Bool; # Does the car allows full control even at lows speeds when stopping
startAccel @32 :Float32; # Required acceleraton to overcome creep braking
steerRateCost @33 :Float32; # Lateral MPC cost on steering rate
steerControlType @34 :SteerControlType;
radarOffCan @35 :Bool; # True when radar objects aren't visible on CAN
minSpeedCan @51 :Float32; # Minimum vehicle speed from CAN (below this value drops to 0)
stoppingDecelRate @52 :Float32; # m/s^2/s while trying to stop
startingAccelRate @53 :Float32; # m/s^2/s while trying to start
steerActuatorDelay @36 :Float32; # Steering wheel actuator delay in seconds
longitudinalActuatorDelay @58 :Float32; # Gas/Brake actuator delay in seconds
openpilotLongitudinalControl @37 :Bool; # is openpilot doing the longitudinal control?
carVin @38 :Text; # VIN number queried during fingerprinting
dashcamOnly @41: Bool;
transmissionType @43 :TransmissionType;
carFw @44 :List(CarFw);
radarTimeStep @45: Float32 = 0.05; # time delta between radar updates, 20Hz is very standard
communityFeature @46: Bool; # true if a community maintained feature is detected
fingerprintSource @49: FingerprintSource;
networkLocation @50 :NetworkLocation; # Where Panda/C2 is integrated into the car's CAN network
struct LateralParams {
torqueBP @0 :List(Int32);
torqueV @1 :List(Int32);
}
struct LateralPIDTuning {
kpBP @0 :List(Float32);
kpV @1 :List(Float32);
kiBP @2 :List(Float32);
kiV @3 :List(Float32);
kf @4 :Float32;
}
struct LongitudinalPIDTuning {
kpBP @0 :List(Float32);
kpV @1 :List(Float32);
kiBP @2 :List(Float32);
kiV @3 :List(Float32);
deadzoneBP @4 :List(Float32);
deadzoneV @5 :List(Float32);
}
struct LateralINDITuning {
outerLoopGainBP @4 :List(Float32);
outerLoopGainV @5 :List(Float32);
innerLoopGainBP @6 :List(Float32);
innerLoopGainV @7 :List(Float32);
timeConstantBP @8 :List(Float32);
timeConstantV @9 :List(Float32);
actuatorEffectivenessBP @10 :List(Float32);
actuatorEffectivenessV @11 :List(Float32);
outerLoopGainDEPRECATED @0 :Float32;
innerLoopGainDEPRECATED @1 :Float32;
timeConstantDEPRECATED @2 :Float32;
actuatorEffectivenessDEPRECATED @3 :Float32;
}
struct LateralLQRTuning {
scale @0 :Float32;
ki @1 :Float32;
dcGain @2 :Float32;
# State space system
a @3 :List(Float32);
b @4 :List(Float32);
c @5 :List(Float32);
k @6 :List(Float32); # LQR gain
l @7 :List(Float32); # Kalman gain
}
enum SafetyModel {
silent @0;
hondaNidec @1;
toyota @2;
elm327 @3;
gm @4;
hondaBoschGiraffe @5;
ford @6;
cadillac @7;
hyundai @8;
chrysler @9;
tesla @10;
subaru @11;
gmPassive @12;
mazda @13;
nissan @14;
volkswagen @15;
toyotaIpas @16;
allOutput @17;
gmAscm @18;
noOutput @19; # like silent but without silent CAN TXs
hondaBoschHarness @20;
volkswagenPq @21;
subaruLegacy @22; # pre-Global platform
hyundaiLegacy @23;
hyundaiCommunity @24;
}
enum SteerControlType {
torque @0;
angle @1;
}
enum TransmissionType {
unknown @0;
automatic @1; # Traditional auto, including DSG
manual @2; # True "stick shift" only
direct @3; # Electric vehicle or other direct drive
cvt @4;
}
struct CarFw {
ecu @0 :Ecu;
fwVersion @1 :Data;
address @2: UInt32;
subAddress @3: UInt8;
}
enum Ecu {
eps @0;
esp @1;
fwdRadar @2;
fwdCamera @3;
engine @4;
unknown @5;
transmission @8; # Transmission Control Module
srs @9; # airbag
gateway @10; # can gateway
hud @11; # heads up display
combinationMeter @12; # instrument cluster
# Toyota only
dsu @6;
apgs @7;
# Honda only
vsa @13; # Vehicle Stability Assist
programmedFuelInjection @14;
electricBrakeBooster @15;
shiftByWire @16;
}
enum FingerprintSource {
can @0;
fw @1;
fixed @2;
}
enum NetworkLocation {
fwdCamera @0; # Standard/default integration at LKAS camera
gateway @1; # Integration at vehicle's CAN gateway
}
enableCameraDEPRECATED @4 :Bool;
isPandaBlackDEPRECATED @39: Bool;
}
================================================
FILE: cereal/dp.capnp
================================================
using Cxx = import "./include/c++.capnp";
$Cxx.namespace("cereal");
using Java = import "./include/java.capnp";
$Java.package("ai.comma.openpilot.cereal");
$Java.outerClassname("Dp");
@0xbfa7e645486440c7;
# dp.capnp: a home for deprecated structs
# dp
struct DragonConf {
dpThermalStarted @0 :Bool;
dpThermalOverheat @1 :Bool;
dpAtl @2 :Bool;
dpAtlOpLong @3 :Bool;
dpDashcamd @4 :Bool;
dpAutoShutdown @5 :Bool;
dpAthenad @6 :Bool;
dpUploader @7 :Bool;
dpLateralMode @8 :UInt8;
dpSignalOffDelay @9 :Float32;
dpLcMinMph @10 :UInt8;
dpLcAutoMinMph @11 :UInt8;
dpLcAutoDelay @12 :Float32;
dpLaneLessModeCtrl @13 :Bool;
dpLaneLessMode @14 :UInt8;
dpAllowGas @15 :Bool;
dpFollowingProfileCtrl @16 :Bool;
dpFollowingProfile @17 :UInt8;
dpAccelProfileCtrl @18 :Bool;
dpAccelProfile @19 :UInt8;
dpGearCheck @20 :Bool;
dpSpeedCheck @21 :Bool;
dpUiDisplayMode @22 :UInt8;
dpUiSpeed @23 :Bool;
dpUiEvent @24 :Bool;
dpUiMaxSpeed @25 :Bool;
dpUiFace @26 :Bool;
dpUiLane @27 :Bool;
dpUiLead @28 :Bool;
dpUiSide @29 :Bool;
dpUiTop @30 :Bool;
dpUiBlinker @31 :Bool;
dpUiBrightness @32 :UInt8;
dpUiVolume @33 :Int8;
dpToyotaLdw @34 :Bool;
dpToyotaSng @35 :Bool;
dpToyotaCruiseOverride @36 :Bool;
dpToyotaCruiseOverrideVego @37 :Bool;
dpToyotaCruiseOverrideAt @38 :Float32;
dpToyotaCruiseOverrideSpeed @39 :Float32;
dpVwTimebombAssist @40 :Bool;
dpIpAddr @41 :Text;
dpCameraOffset @42 :Int8;
dpPathOffset @43 :Int8;
dpLocale @44 :Text;
dpSrLearner @45 :Bool;
dpSrCustom @46 :Float32;
dpAppd @47 :Bool;
dpMapd @48 :Bool;
}
================================================
FILE: cereal/include/c++.capnp
================================================
# Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
# Licensed under the MIT License:
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
@0xbdf87d7bb8304e81;
$namespace("capnp::annotations");
annotation namespace(file): Text;
annotation name(field, enumerant, struct, enum, interface, method, param, group, union): Text;
================================================
FILE: cereal/include/java.capnp
================================================
# Copyright (c) 2013-2015 Sandstorm Development Group, Inc. and contributors
# Licensed under the MIT License:
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
@0xc5f1af96651f70ea;
annotation package @0x9ee4c8f803b3b596 (file) : Text;
# Name of the package, such as "org.example.foo", in which the generated code will reside.
annotation outerClassname @0x9b066bb4881f7cd3 (file) : Text;
# Name of the outer class that will wrap the generated code.
================================================
FILE: cereal/legacy.capnp
================================================
using Cxx = import "./include/c++.capnp";
$Cxx.namespace("cereal");
using Java = import "./include/java.capnp";
$Java.package("ai.comma.openpilot.cereal");
$Java.outerClassname("Legacy");
@0x80ef1ec4889c2a63;
# legacy.capnp: a home for deprecated structs
struct LogRotate @0x9811e1f38f62f2d1 {
segmentNum @0 :Int32;
path @1 :Text;
}
struct LiveUI @0xc08240f996aefced {
rearViewCam @0 :Bool;
alertText1 @1 :Text;
alertText2 @2 :Text;
awarenessStatus @3 :Float32;
}
struct UiLayoutState @0x88dcce08ad29dda0 {
activeApp @0 :App;
sidebarCollapsed @1 :Bool;
mapEnabled @2 :Bool;
mockEngaged @3 :Bool;
enum App @0x9917470acf94d285 {
home @0;
music @1;
nav @2;
settings @3;
none @4;
}
}
struct OrbslamCorrection @0x8afd33dc9b35e1aa {
correctionMonoTime @0 :UInt64;
prePositionECEF @1 :List(Float64);
postPositionECEF @2 :List(Float64);
prePoseQuatECEF @3 :List(Float32);
postPoseQuatECEF @4 :List(Float32);
numInliers @5 :UInt32;
}
struct EthernetPacket @0xa99a9d5b33cf5859 {
pkt @0 :Data;
ts @1 :Float32;
}
struct CellInfo @0xcff7566681c277ce {
timestamp @0 :UInt64;
repr @1 :Text; # android toString() for now
}
struct WifiScan @0xd4df5a192382ba0b {
bssid @0 :Text;
ssid @1 :Text;
capabilities @2 :Text;
frequency @3 :Int32;
level @4 :Int32;
timestamp @5 :Int64;
centerFreq0 @6 :Int32;
centerFreq1 @7 :Int32;
channelWidth @8 :ChannelWidth;
operatorFriendlyName @9 :Text;
venueName @10 :Text;
is80211mcResponder @11 :Bool;
passpoint @12 :Bool;
distanceCm @13 :Int32;
distanceSdCm @14 :Int32;
enum ChannelWidth @0xcb6a279f015f6b51 {
w20Mhz @0;
w40Mhz @1;
w80Mhz @2;
w160Mhz @3;
w80Plus80Mhz @4;
}
}
struct LiveEventData @0x94b7baa90c5c321e {
name @0 :Text;
value @1 :Int32;
}
struct ModelData @0xb8aad62cffef28a9 {
frameId @0 :UInt32;
frameAge @12 :UInt32;
frameDropPerc @13 :Float32;
timestampEof @9 :UInt64;
modelExecutionTime @14 :Float32;
gpuExecutionTime @16 :Float32;
rawPred @15 :Data;
path @1 :PathData;
leftLane @2 :PathData;
rightLane @3 :PathData;
lead @4 :LeadData;
freePath @6 :List(Float32);
settings @5 :ModelSettings;
leadFuture @7 :LeadData;
speed @8 :List(Float32);
meta @10 :MetaData;
longitudinal @11 :LongitudinalData;
struct PathData @0x8817eeea389e9f08 {
points @0 :List(Float32);
prob @1 :Float32;
std @2 :Float32;
stds @3 :List(Float32);
poly @4 :List(Float32);
validLen @5 :Float32;
}
struct LeadData @0xd1c9bef96d26fa91 {
dist @0 :Float32;
prob @1 :Float32;
std @2 :Float32;
relVel @3 :Float32;
relVelStd @4 :Float32;
relY @5 :Float32;
relYStd @6 :Float32;
relA @7 :Float32;
relAStd @8 :Float32;
}
struct ModelSettings @0xa26e3710efd3e914 {
bigBoxX @0 :UInt16;
bigBoxY @1 :UInt16;
bigBoxWidth @2 :UInt16;
bigBoxHeight @3 :UInt16;
boxProjection @4 :List(Float32);
yuvCorrection @5 :List(Float32);
inputTransform @6 :List(Float32);
}
struct MetaData @0x9744f25fb60f2bf8 {
engagedProb @0 :Float32;
desirePrediction @1 :List(Float32);
brakeDisengageProb @2 :Float32;
gasDisengageProb @3 :Float32;
steerOverrideProb @4 :Float32;
desireState @5 :List(Float32);
}
struct LongitudinalData @0xf98f999c6a071122 {
distances @2 :List(Float32);
speeds @0 :List(Float32);
accelerations @1 :List(Float32);
}
}
struct ECEFPoint @0xc25bbbd524983447 {
x @0 :Float64;
y @1 :Float64;
z @2 :Float64;
}
struct ECEFPointDEPRECATED @0xe10e21168db0c7f7 {
x @0 :Float32;
y @1 :Float32;
z @2 :Float32;
}
struct GPSPlannerPoints @0xab54c59699f8f9f3 {
curPosDEPRECATED @0 :ECEFPointDEPRECATED;
pointsDEPRECATED @1 :List(ECEFPointDEPRECATED);
curPos @6 :ECEFPoint;
points @7 :List(ECEFPoint);
valid @2 :Bool;
trackName @3 :Text;
speedLimit @4 :Float32;
accelTarget @5 :Float32;
}
struct GPSPlannerPlan @0xf5ad1d90cdc1dd6b {
valid @0 :Bool;
poly @1 :List(Float32);
trackName @2 :Text;
speed @3 :Float32;
acceleration @4 :Float32;
pointsDEPRECATED @5 :List(ECEFPointDEPRECATED);
points @6 :List(ECEFPoint);
xLookahead @7 :Float32;
}
struct UiNavigationEvent @0x90c8426c3eaddd3b {
type @0: Type;
status @1: Status;
distanceTo @2: Float32;
endRoadPointDEPRECATED @3: ECEFPointDEPRECATED;
endRoadPoint @4: ECEFPoint;
enum Type @0xe8db07dcf8fcea05 {
none @0;
laneChangeLeft @1;
laneChangeRight @2;
mergeLeft @3;
mergeRight @4;
turnLeft @5;
turnRight @6;
}
enum Status @0xb9aa88c75ef99a1f {
none @0;
passive @1;
approaching @2;
active @3;
}
}
struct LiveLocationData @0xb99b2bc7a57e8128 {
status @0 :UInt8;
# 3D fix
lat @1 :Float64;
lon @2 :Float64;
alt @3 :Float32; # m
# speed
speed @4 :Float32; # m/s
# NED velocity components
vNED @5 :List(Float32);
# roll, pitch, heading (x,y,z)
roll @6 :Float32; # WRT to center of earth?
pitch @7 :Float32; # WRT to center of earth?
heading @8 :Float32; # WRT to north?
# what are these?
wanderAngle @9 :Float32;
trackAngle @10 :Float32;
# car frame -- https://upload.wikimedia.org/wikipedia/commons/f/f5/RPY_angles_of_cars.png
# gyro, in car frame, deg/s
gyro @11 :List(Float32);
# accel, in car frame, m/s^2
accel @12 :List(Float32);
accuracy @13 :Accuracy;
source @14 :SensorSource;
# if we are fixing a location in the past
fixMonoTime @15 :UInt64;
gpsWeek @16 :Int32;
timeOfWeek @17 :Float64;
positionECEF @18 :List(Float64);
poseQuatECEF @19 :List(Float32);
pitchCalibration @20 :Float32;
yawCalibration @21 :Float32;
imuFrame @22 :List(Float32);
struct Accuracy @0x943dc4625473b03f {
pNEDError @0 :List(Float32);
vNEDError @1 :List(Float32);
rollError @2 :Float32;
pitchError @3 :Float32;
headingError @4 :Float32;
ellipsoidSemiMajorError @5 :Float32;
ellipsoidSemiMinorError @6 :Float32;
ellipsoidOrientationError @7 :Float32;
}
enum SensorSource @0xc871d3cc252af657 {
applanix @0;
kalman @1;
orbslam @2;
timing @3;
dummy @4;
}
}
struct OrbOdometry @0xd7700859ed1f5b76 {
# timing first
startMonoTime @0 :UInt64;
endMonoTime @1 :UInt64;
# fundamental matrix and error
f @2: List(Float64);
err @3: Float64;
# number of inlier points
inliers @4: Int32;
# for debug only
# indexed by endMonoTime features
# value is startMonoTime feature match
# -1 if no match
matches @5: List(Int16);
}
struct OrbFeatures @0xcd60164a8a0159ef {
timestampEof @0 :UInt64;
# transposed arrays of normalized image coordinates
# len(xs) == len(ys) == len(descriptors) * 32
xs @1 :List(Float32);
ys @2 :List(Float32);
descriptors @3 :Data;
octaves @4 :List(Int8);
# match index to last OrbFeatures
# -1 if no match
timestampLastEof @5 :UInt64;
matches @6: List(Int16);
}
struct OrbFeaturesSummary @0xd500d30c5803fa4f {
timestampEof @0 :UInt64;
timestampLastEof @1 :UInt64;
featureCount @2 :UInt16;
matchCount @3 :UInt16;
computeNs @4 :UInt64;
}
struct OrbKeyFrame @0xc8233c0345e27e24 {
# this is a globally unique id for the KeyFrame
id @0: UInt64;
# this is the location of the KeyFrame
pos @1: ECEFPoint;
# these are the features in the world
# len(dpos) == len(descriptors) * 32
dpos @2 :List(ECEFPoint);
descriptors @3 :Data;
}
struct KalmanOdometry @0x92e21bb7ea38793a {
trans @0 :List(Float32); # m/s in device frame
rot @1 :List(Float32); # rad/s in device frame
transStd @2 :List(Float32); # std m/s in device frame
rotStd @3 :List(Float32); # std rad/s in device frame
}
struct OrbObservation @0x9b326d4e436afec7 {
observationMonoTime @0 :UInt64;
normalizedCoordinates @1 :List(Float32);
locationECEF @2 :List(Float64);
matchDistance @3: UInt32;
}
struct CalibrationFeatures @0x8fdfadb254ea867a {
frameId @0 :UInt32;
p0 @1 :List(Float32);
p1 @2 :List(Float32);
status @3 :List(Int8);
}
struct NavStatus @0xbd8822120928120c {
isNavigating @0 :Bool;
currentAddress @1 :Address;
struct Address @0xce7cd672cacc7814 {
title @0 :Text;
lat @1 :Float64;
lng @2 :Float64;
house @3 :Text;
address @4 :Text;
street @5 :Text;
city @6 :Text;
state @7 :Text;
country @8 :Text;
}
}
struct NavUpdate @0xdb98be6565516acb {
isNavigating @0 :Bool;
curSegment @1 :Int32;
segments @2 :List(Segment);
struct LatLng @0x9eaef9187cadbb9b {
lat @0 :Float64;
lng @1 :Float64;
}
struct Segment @0xa5b39b4fc4d7da3f {
from @0 :LatLng;
to @1 :LatLng;
updateTime @2 :Int32;
distance @3 :Int32;
crossTime @4 :Int32;
exitNo @5 :Int32;
instruction @6 :Instruction;
parts @7 :List(LatLng);
enum Instruction @0xc5417a637451246f {
turnLeft @0;
turnRight @1;
keepLeft @2;
keepRight @3;
straight @4;
roundaboutExitNumber @5;
roundaboutExit @6;
roundaboutTurnLeft @7;
unkn8 @8;
roundaboutStraight @9;
unkn10 @10;
roundaboutTurnRight @11;
unkn12 @12;
roundaboutUturn @13;
unkn14 @14;
arrive @15;
exitLeft @16;
exitRight @17;
unkn18 @18;
uturn @19;
# ...
}
}
}
struct TrafficEvent @0xacfa74a094e62626 {
type @0 :Type;
distance @1 :Float32;
action @2 :Action;
resuming @3 :Bool;
enum Type @0xd85d75253435bf4b {
stopSign @0;
lightRed @1;
lightYellow @2;
lightGreen @3;
stopLight @4;
}
enum Action @0xa6f6ce72165ccb49 {
none @0;
yield @1;
stop @2;
resumeReady @3;
}
}
struct AndroidGnss @0xdfdf30d03fc485bd {
union {
measurements @0 :Measurements;
navigationMessage @1 :NavigationMessage;
}
struct Measurements @0xa20710d4f428d6cd {
clock @0 :Clock;
measurements @1 :List(Measurement);
struct Clock @0xa0e27b453a38f450 {
timeNanos @0 :Int64;
hardwareClockDiscontinuityCount @1 :Int32;
hasTimeUncertaintyNanos @2 :Bool;
timeUncertaintyNanos @3 :Float64;
hasLeapSecond @4 :Bool;
leapSecond @5 :Int32;
hasFullBiasNanos @6 :Bool;
fullBiasNanos @7 :Int64;
hasBiasNanos @8 :Bool;
biasNanos @9 :Float64;
hasBiasUncertaintyNanos @10 :Bool;
biasUncertaintyNanos @11 :Float64;
hasDriftNanosPerSecond @12 :Bool;
driftNanosPerSecond @13 :Float64;
hasDriftUncertaintyNanosPerSecond @14 :Bool;
driftUncertaintyNanosPerSecond @15 :Float64;
}
struct Measurement @0xd949bf717d77614d {
svId @0 :Int32;
constellation @1 :Constellation;
timeOffsetNanos @2 :Float64;
state @3 :Int32;
receivedSvTimeNanos @4 :Int64;
receivedSvTimeUncertaintyNanos @5 :Int64;
cn0DbHz @6 :Float64;
pseudorangeRateMetersPerSecond @7 :Float64;
pseudorangeRateUncertaintyMetersPerSecond @8 :Float64;
accumulatedDeltaRangeState @9 :Int32;
accumulatedDeltaRangeMeters @10 :Float64;
accumulatedDeltaRangeUncertaintyMeters @11 :Float64;
hasCarrierFrequencyHz @12 :Bool;
carrierFrequencyHz @13 :Float32;
hasCarrierCycles @14 :Bool;
carrierCycles @15 :Int64;
hasCarrierPhase @16 :Bool;
carrierPhase @17 :Float64;
hasCarrierPhaseUncertainty @18 :Bool;
carrierPhaseUncertainty @19 :Float64;
hasSnrInDb @20 :Bool;
snrInDb @21 :Float64;
multipathIndicator @22 :MultipathIndicator;
enum Constellation @0x9ef1f3ff0deb5ffb {
unknown @0;
gps @1;
sbas @2;
glonass @3;
qzss @4;
beidou @5;
galileo @6;
}
enum State @0xcbb9490adce12d72 {
unknown @0;
codeLock @1;
bitSync @2;
subframeSync @3;
towDecoded @4;
msecAmbiguous @5;
symbolSync @6;
gloStringSync @7;
gloTodDecoded @8;
bdsD2BitSync @9;
bdsD2SubframeSync @10;
galE1bcCodeLock @11;
galE1c2ndCodeLock @12;
galE1bPageSync @13;
sbasSync @14;
}
enum MultipathIndicator @0xc04e7b6231d4caa8 {
unknown @0;
detected @1;
notDetected @2;
}
}
}
struct NavigationMessage @0xe2517b083095fd4e {
type @0 :Int32;
svId @1 :Int32;
messageId @2 :Int32;
submessageId @3 :Int32;
data @4 :Data;
status @5 :Status;
enum Status @0xec1ff7996b35366f {
unknown @0;
parityPassed @1;
parityRebuilt @2;
}
}
}
struct QcomGnss @0xde94674b07ae51c1 {
logTs @0 :UInt64;
union {
measurementReport @1 :MeasurementReport;
clockReport @2 :ClockReport;
drMeasurementReport @3 :DrMeasurementReport;
drSvPoly @4 :DrSvPolyReport;
rawLog @5 :Data;
}
enum MeasurementSource @0xd71a12b6faada7ee {
gps @0;
glonass @1;
beidou @2;
}
enum SVObservationState @0xe81e829a0d6c83e9 {
idle @0;
search @1;
searchVerify @2;
bitEdge @3;
trackVerify @4;
track @5;
restart @6;
dpo @7;
glo10msBe @8;
glo10msAt @9;
}
struct MeasurementStatus @0xe501010e1bcae83b {
subMillisecondIsValid @0 :Bool;
subBitTimeIsKnown @1 :Bool;
satelliteTimeIsKnown @2 :Bool;
bitEdgeConfirmedFromSignal @3 :Bool;
measuredVelocity @4 :Bool;
fineOrCoarseVelocity @5 :Bool;
lockPointValid @6 :Bool;
lockPointPositive @7 :Bool;
lastUpdateFromDifference @8 :Bool;
lastUpdateFromVelocityDifference @9 :Bool;
strongIndicationOfCrossCorelation @10 :Bool;
tentativeMeasurement @11 :Bool;
measurementNotUsable @12 :Bool;
sirCheckIsNeeded @13 :Bool;
probationMode @14 :Bool;
glonassMeanderBitEdgeValid @15 :Bool;
glonassTimeMarkValid @16 :Bool;
gpsRoundRobinRxDiversity @17 :Bool;
gpsRxDiversity @18 :Bool;
gpsLowBandwidthRxDiversityCombined @19 :Bool;
gpsHighBandwidthNu4 @20 :Bool;
gpsHighBandwidthNu8 @21 :Bool;
gpsHighBandwidthUniform @22 :Bool;
multipathIndicator @23 :Bool;
imdJammingIndicator @24 :Bool;
lteB13TxJammingIndicator @25 :Bool;
freshMeasurementIndicator @26 :Bool;
multipathEstimateIsValid @27 :Bool;
directionIsValid @28 :Bool;
}
struct MeasurementReport @0xf580d7d86b7b8692 {
source @0 :MeasurementSource;
fCount @1 :UInt32;
gpsWeek @2 :UInt16;
glonassCycleNumber @3 :UInt8;
glonassNumberOfDays @4 :UInt16;
milliseconds @5 :UInt32;
timeBias @6 :Float32;
clockTimeUncertainty @7 :Float32;
clockFrequencyBias @8 :Float32;
clockFrequencyUncertainty @9 :Float32;
sv @10 :List(SV);
struct SV @0xf10c595ae7bb2c27 {
svId @0 :UInt8;
observationState @2 :SVObservationState;
observations @3 :UInt8;
goodObservations @4 :UInt8;
gpsParityErrorCount @5 :UInt16;
glonassFrequencyIndex @1 :Int8;
glonassHemmingErrorCount @6 :UInt8;
filterStages @7 :UInt8;
carrierNoise @8 :UInt16;
latency @9 :Int16;
predetectInterval @10 :UInt8;
postdetections @11 :UInt16;
unfilteredMeasurementIntegral @12 :UInt32;
unfilteredMeasurementFraction @13 :Float32;
unfilteredTimeUncertainty @14 :Float32;
unfilteredSpeed @15 :Float32;
unfilteredSpeedUncertainty @16 :Float32;
measurementStatus @17 :MeasurementStatus;
multipathEstimate @18 :UInt32;
azimuth @19 :Float32;
elevation @20 :Float32;
carrierPhaseCyclesIntegral @21 :Int32;
carrierPhaseCyclesFraction @22 :UInt16;
fineSpeed @23 :Float32;
fineSpeedUncertainty @24 :Float32;
cycleSlipCount @25 :UInt8;
}
}
struct ClockReport @0xca965e4add8f4f0b {
hasFCount @0 :Bool;
fCount @1 :UInt32;
hasGpsWeek @2 :Bool;
gpsWeek @3 :UInt16;
hasGpsMilliseconds @4 :Bool;
gpsMilliseconds @5 :UInt32;
gpsTimeBias @6 :Float32;
gpsClockTimeUncertainty @7 :Float32;
gpsClockSource @8 :UInt8;
hasGlonassYear @9 :Bool;
glonassYear @10 :UInt8;
hasGlonassDay @11 :Bool;
glonassDay @12 :UInt16;
hasGlonassMilliseconds @13 :Bool;
glonassMilliseconds @14 :UInt32;
glonassTimeBias @15 :Float32;
glonassClockTimeUncertainty @16 :Float32;
glonassClockSource @17 :UInt8;
bdsWeek @18 :UInt16;
bdsMilliseconds @19 :UInt32;
bdsTimeBias @20 :Float32;
bdsClockTimeUncertainty @21 :Float32;
bdsClockSource @22 :UInt8;
galWeek @23 :UInt16;
galMilliseconds @24 :UInt32;
galTimeBias @25 :Float32;
galClockTimeUncertainty @26 :Float32;
galClockSource @27 :UInt8;
clockFrequencyBias @28 :Float32;
clockFrequencyUncertainty @29 :Float32;
frequencySource @30 :UInt8;
gpsLeapSeconds @31 :UInt8;
gpsLeapSecondsUncertainty @32 :UInt8;
gpsLeapSecondsSource @33 :UInt8;
gpsToGlonassTimeBiasMilliseconds @34 :Float32;
gpsToGlonassTimeBiasMillisecondsUncertainty @35 :Float32;
gpsToBdsTimeBiasMilliseconds @36 :Float32;
gpsToBdsTimeBiasMillisecondsUncertainty @37 :Float32;
bdsToGloTimeBiasMilliseconds @38 :Float32;
bdsToGloTimeBiasMillisecondsUncertainty @39 :Float32;
gpsToGalTimeBiasMilliseconds @40 :Float32;
gpsToGalTimeBiasMillisecondsUncertainty @41 :Float32;
galToGloTimeBiasMilliseconds @42 :Float32;
galToGloTimeBiasMillisecondsUncertainty @43 :Float32;
galToBdsTimeBiasMilliseconds @44 :Float32;
galToBdsTimeBiasMillisecondsUncertainty @45 :Float32;
hasRtcTime @46 :Bool;
systemRtcTime @47 :UInt32;
fCountOffset @48 :UInt32;
lpmRtcCount @49 :UInt32;
clockResets @50 :UInt32;
}
struct DrMeasurementReport @0x8053c39445c6c75c {
reason @0 :UInt8;
seqNum @1 :UInt8;
seqMax @2 :UInt8;
rfLoss @3 :UInt16;
systemRtcValid @4 :Bool;
fCount @5 :UInt32;
clockResets @6 :UInt32;
systemRtcTime @7 :UInt64;
gpsLeapSeconds @8 :UInt8;
gpsLeapSecondsUncertainty @9 :UInt8;
gpsToGlonassTimeBiasMilliseconds @10 :Float32;
gpsToGlonassTimeBiasMillisecondsUncertainty @11 :Float32;
gpsWeek @12 :UInt16;
gpsMilliseconds @13 :UInt32;
gpsTimeBiasMs @14 :UInt32;
gpsClockTimeUncertaintyMs @15 :UInt32;
gpsClockSource @16 :UInt8;
glonassClockSource @17 :UInt8;
glonassYear @18 :UInt8;
glonassDay @19 :UInt16;
glonassMilliseconds @20 :UInt32;
glonassTimeBias @21 :Float32;
glonassClockTimeUncertainty @22 :Float32;
clockFrequencyBias @23 :Float32;
clockFrequencyUncertainty @24 :Float32;
frequencySource @25 :UInt8;
source @26 :MeasurementSource;
sv @27 :List(SV);
struct SV @0xf08b81df8cbf459c {
svId @0 :UInt8;
glonassFrequencyIndex @1 :Int8;
observationState @2 :SVObservationState;
observations @3 :UInt8;
goodObservations @4 :UInt8;
filterStages @5 :UInt8;
predetectInterval @6 :UInt8;
cycleSlipCount @7 :UInt8;
postdetections @8 :UInt16;
measurementStatus @9 :MeasurementStatus;
carrierNoise @10 :UInt16;
rfLoss @11 :UInt16;
latency @12 :Int16;
filteredMeasurementFraction @13 :Float32;
filteredMeasurementIntegral @14 :UInt32;
filteredTimeUncertainty @15 :Float32;
filteredSpeed @16 :Float32;
filteredSpeedUncertainty @17 :Float32;
unfilteredMeasurementFraction @18 :Float32;
unfilteredMeasurementIntegral @19 :UInt32;
unfilteredTimeUncertainty @20 :Float32;
unfilteredSpeed @21 :Float32;
unfilteredSpeedUncertainty @22 :Float32;
multipathEstimate @23 :UInt32;
azimuth @24 :Float32;
elevation @25 :Float32;
dopplerAcceleration @26 :Float32;
fineSpeed @27 :Float32;
fineSpeedUncertainty @28 :Float32;
carrierPhase @29 :Float64;
fCount @30 :UInt32;
parityErrorCount @31 :UInt16;
goodParity @32 :Bool;
}
}
struct DrSvPolyReport @0xb1fb80811a673270 {
svId @0 :UInt16;
frequencyIndex @1 :Int8;
hasPosition @2 :Bool;
hasIono @3 :Bool;
hasTropo @4 :Bool;
hasElevation @5 :Bool;
polyFromXtra @6 :Bool;
hasSbasIono @7 :Bool;
iode @8 :UInt16;
t0 @9 :Float64;
xyz0 @10 :List(Float64);
xyzN @11 :List(Float64);
other @12 :List(Float32);
positionUncertainty @13 :Float32;
ionoDelay @14 :Float32;
ionoDot @15 :Float32;
sbasIonoDelay @16 :Float32;
sbasIonoDot @17 :Float32;
tropoDelay @18 :Float32;
elevation @19 :Float32;
elevationDot @20 :Float32;
elevationUncertainty @21 :Float32;
velocityCoeff @22 :List(Float64);
}
}
struct LidarPts @0xe3d6685d4e9d8f7a {
r @0 :List(UInt16); # uint16 m*500.0
theta @1 :List(UInt16); # uint16 deg*100.0
reflect @2 :List(UInt8); # uint8 0-255
# For storing out of file.
idx @3 :UInt64;
# For storing in file
pkt @4 :Data;
}
================================================
FILE: cereal/log.capnp
================================================
using Cxx = import "./include/c++.capnp";
$Cxx.namespace("cereal");
using Java = import "./include/java.capnp";
$Java.package("ai.comma.openpilot.cereal");
$Java.outerClassname("Log");
using Car = import "car.capnp";
using Legacy = import "legacy.capnp";
using Dp = import "dp.capnp";
@0xf3b1f17e25a4285b;
const logVersion :Int32 = 1;
struct Map(Key, Value) {
entries @0 :List(Entry);
struct Entry {
key @0 :Key;
value @1 :Value;
}
}
struct InitData {
kernelArgs @0 :List(Text);
kernelVersion @15 :Text;
osVersion @18 :Text;
gctx @1 :Text;
dongleId @2 :Text;
deviceType @3 :DeviceType;
version @4 :Text;
gitCommit @10 :Text;
gitBranch @11 :Text;
gitRemote @13 :Text;
androidProperties @16 :Map(Text, Text);
pandaInfo @8 :PandaInfo;
dirty @9 :Bool;
passive @12 :Bool;
params @17 :Map(Text, Data);
enum DeviceType {
unknown @0;
neo @1;
chffrAndroid @2;
chffrIos @3;
tici @4;
pc @5;
jetson @6;
}
struct PandaInfo {
hasPanda @0 :Bool;
dongleId @1 :Text;
stVersion @2 :Text;
espVersion @3 :Text;
}
# ***** deprecated stuff *****
androidBuildInfo @5 :AndroidBuildInfo;
androidSensorsDEPRECATED @6 :List(AndroidSensor);
chffrAndroidExtraDEPRECATED @7 :ChffrAndroidExtra;
iosBuildInfoDEPRECATED @14 :IosBuildInfo;
struct AndroidBuildInfo {
board @0 :Text;
bootloader @1 :Text;
brand @2 :Text;
device @3 :Text;
display @4 :Text;
fingerprint @5 :Text;
hardware @6 :Text;
host @7 :Text;
id @8 :Text;
manufacturer @9 :Text;
model @10 :Text;
product @11 :Text;
radioVersion @12 :Text;
serial @13 :Text;
supportedAbis @14 :List(Text);
tags @15 :Text;
time @16 :Int64;
type @17 :Text;
user @18 :Text;
versionCodename @19 :Text;
versionRelease @20 :Text;
versionSdk @21 :Int32;
versionSecurityPatch @22 :Text;
}
struct AndroidSensor {
id @0 :Int32;
name @1 :Text;
vendor @2 :Text;
version @3 :Int32;
handle @4 :Int32;
type @5 :Int32;
maxRange @6 :Float32;
resolution @7 :Float32;
power @8 :Float32;
minDelay @9 :Int32;
fifoReservedEventCount @10 :UInt32;
fifoMaxEventCount @11 :UInt32;
stringType @12 :Text;
maxDelay @13 :Int32;
}
struct ChffrAndroidExtra {
allCameraCharacteristics @0 :Map(Text, Text);
}
struct IosBuildInfo {
appVersion @0 :Text;
appBuild @1 :UInt32;
osVersion @2 :Text;
deviceModel @3 :Text;
}
}
struct FrameData {
frameId @0 :UInt32;
encodeId @1 :UInt32; # DEPRECATED
frameType @7 :FrameType;
frameLength @3 :Int32;
# Timestamps
timestampEof @2 :UInt64;
timestampSof @8 :UInt64;
# Exposure
integLines @4 :Int32;
highConversionGain @20 :Bool;
gain @15 :Float32; # This includes highConversionGain if enabled
measuredGreyFraction @21 :Float32;
targetGreyFraction @22 :Float32;
# Focus
lensPos @11 :Int32;
lensSag @12 :Float32;
lensErr @13 :Float32;
lensTruePos @14 :Float32;
focusVal @16 :List(Int16);
focusConf @17 :List(UInt8);
sharpnessScore @18 :List(UInt16);
recoverState @19 :Int32;
transform @10 :List(Float32);
androidCaptureResult @9 :AndroidCaptureResult;
image @6 :Data;
globalGainDEPRECATED @5 :Int32;
enum FrameType {
unknown @0;
neo @1;
chffrAndroid @2;
front @3;
}
struct AndroidCaptureResult {
sensitivity @0 :Int32;
frameDuration @1 :Int64;
exposureTime @2 :Int64;
rollingShutterSkew @3 :UInt64;
colorCorrectionTransform @4 :List(Int32);
colorCorrectionGains @5 :List(Float32);
displayRotation @6 :Int8;
}
}
struct Thumbnail {
frameId @0 :UInt32;
timestampEof @1 :UInt64;
thumbnail @2 :Data;
}
struct GPSNMEAData {
timestamp @0 :Int64;
localWallTime @1 :UInt64;
nmea @2 :Text;
}
# android sensor_event_t
struct SensorEventData {
version @0 :Int32;
sensor @1 :Int32;
type @2 :Int32;
timestamp @3 :Int64;
uncalibratedDEPRECATED @10 :Bool;
union {
acceleration @4 :SensorVec;
magnetic @5 :SensorVec;
orientation @6 :SensorVec;
gyro @7 :SensorVec;
pressure @9 :SensorVec;
magneticUncalibrated @11 :SensorVec;
gyroUncalibrated @12 :SensorVec;
proximity @13: Float32;
light @14: Float32;
temperature @15: Float32;
}
source @8 :SensorSource;
struct SensorVec {
v @0 :List(Float32);
status @1 :Int8;
}
enum SensorSource {
android @0;
iOS @1;
fiber @2;
velodyne @3; # Velodyne IMU
bno055 @4; # Bosch accelerometer
lsm6ds3 @5; # accelerometer (c2)
bmp280 @6; # barometer (c2)
mmc3416x @7; # magnetometer (c2)
bmx055 @8;
rpr0521 @9;
lsm6ds3trc @10;
mmc5603nj @11;
}
}
# android struct GpsLocation
struct GpsLocationData {
# Contains GpsLocationFlags bits.
flags @0 :UInt16;
# Represents latitude in degrees.
latitude @1 :Float64;
# Represents longitude in degrees.
longitude @2 :Float64;
# Represents altitude in meters above the WGS 84 reference ellipsoid.
altitude @3 :Float64;
# Represents speed in meters per second.
speed @4 :Float32;
# Represents heading in degrees.
bearingDeg @5 :Float32;
# Represents expected accuracy in meters. (presumably 1 sigma?)
accuracy @6 :Float32;
# Timestamp for the location fix.
# Milliseconds since January 1, 1970.
timestamp @7 :Int64;
source @8 :SensorSource;
# Represents NED velocity in m/s.
vNED @9 :List(Float32);
# Represents expected vertical accuracy in meters. (presumably 1 sigma?)
verticalAccuracy @10 :Float32;
# Represents bearing accuracy in degrees. (presumably 1 sigma?)
bearingAccuracyDeg @11 :Float32;
# Represents velocity accuracy in m/s. (presumably 1 sigma?)
speedAccuracy @12 :Float32;
enum SensorSource {
android @0;
iOS @1;
car @2;
velodyne @3; # Velodyne IMU
fusion @4;
external @5;
ublox @6;
trimble @7;
}
}
struct CanData {
address @0 :UInt32;
busTime @1 :UInt16;
dat @2 :Data;
src @3 :UInt8;
}
struct DeviceState @0xa4d8b5af2aa492eb {
usbOnline @12 :Bool;
networkType @22 :NetworkType;
networkInfo @31 :NetworkInfo;
networkStrength @24 :NetworkStrength;
offroadPowerUsageUwh @23 :UInt32;
carBatteryCapacityUwh @25 :UInt32;
fanSpeedPercentDesired @10 :UInt16;
started @11 :Bool;
startedMonoTime @13 :UInt64;
lastAthenaPingTime @32 :UInt64;
# system utilization
freeSpacePercent @7 :Float32;
memoryUsagePercent @19 :Int8;
gpuUsagePercent @33 :Int8;
cpuUsagePercent @34 :List(Int8); # per-core cpu usage
# power
batteryPercent @8 :Int16;
batteryCurrent @15 :Int32;
chargingError @17 :Bool;
chargingDisabled @18 :Bool;
# device thermals
cpuTempC @26 :List(Float32);
gpuTempC @27 :List(Float32);
memoryTempC @28 :Float32;
ambientTempC @30 :Float32;
thermalStatus @14 :ThermalStatus;
enum ThermalStatus {
green @0;
yellow @1;
red @2;
danger @3;
}
enum NetworkType {
none @0;
wifi @1;
cell2G @2;
cell3G @3;
cell4G @4;
cell5G @5;
ethernet @6;
}
enum NetworkStrength {
unknown @0;
poor @1;
moderate @2;
good @3;
great @4;
}
struct NetworkInfo {
technology @0 :Text;
operator @1 :Text;
band @2 :Text;
channel @3 :UInt16;
extra @4 :Text;
state @5 :Text;
}
# deprecated
cpu0DEPRECATED @0 :UInt16;
cpu1DEPRECATED @1 :UInt16;
cpu2DEPRECATED @2 :UInt16;
cpu3DEPRECATED @3 :UInt16;
memDEPRECATED @4 :UInt16;
gpuDEPRECATED @5 :UInt16;
batDEPRECATED @6 :UInt32;
pa0DEPRECATED @21 :UInt16;
cpuUsagePercentDEPRECATED @20 :Int8;
batteryStatusDEPRECATED @9 :Text;
batteryVoltageDEPRECATED @16 :Int32;
batteryTempCDEPRECATED @29 :Float32;
}
struct PandaState @0xa7649e2575e4591e {
# from can health
voltage @0 :UInt32;
current @1 :UInt32;
ignitionLine @2 :Bool;
controlsAllowed @3 :Bool;
gasInterceptorDetected @4 :Bool;
hasGps @6 :Bool;
canSendErrs @7 :UInt32;
canFwdErrs @8 :UInt32;
canRxErrs @19 :UInt32;
gmlanSendErrs @9 :UInt32;
pandaType @10 :PandaType;
fanSpeedRpm @11 :UInt16;
usbPowerMode @12 :UsbPowerMode;
ignitionCan @13 :Bool;
safetyModel @14 :Car.CarParams.SafetyModel;
safetyParam @20 :Int16;
faultStatus @15 :FaultStatus;
powerSaveEnabled @16 :Bool;
uptime @17 :UInt32;
faults @18 :List(FaultType);
harnessStatus @21 :HarnessStatus;
heartbeatLost @22 :Bool;
enum FaultStatus {
none @0;
faultTemp @1;
faultPerm @2;
}
enum FaultType {
relayMalfunction @0;
unusedInterruptHandled @1;
interruptRateCan1 @2;
interruptRateCan2 @3;
interruptRateCan3 @4;
interruptRateTach @5;
interruptRateGmlan @6;
interruptRateInterrupts @7;
interruptRateSpiDma @8;
interruptRateSpiCs @9;
interruptRateUart1 @10;
interruptRateUart2 @11;
interruptRateUart3 @12;
interruptRateUart5 @13;
interruptRateUartDma @14;
interruptRateUsb @15;
interruptRateTim1 @16;
interruptRateTim3 @17;
registerDivergent @18;
interruptRateKlineInit @19;
interruptRateClockSource @20;
interruptRateTick @21;
# Update max fault type in boardd when adding faults
}
enum PandaType @0x8a58adf93e5b3751 {
unknown @0;
whitePanda @1;
greyPanda @2;
blackPanda @3;
pedal @4;
uno @5;
dos @6;
redPanda @7;
}
enum UsbPowerMode {
none @0;
client @1;
cdp @2;
dcp @3;
}
enum HarnessStatus {
notConnected @0;
normal @1;
flipped @2;
}
startedSignalDetectedDEPRECATED @5 :Bool;
}
struct RadarState @0x9a185389d6fdd05f {
canMonoTimes @10 :List(UInt64);
mdMonoTime @6 :UInt64;
carStateMonoTime @11 :UInt64;
radarErrors @12 :List(Car.RadarData.Error);
leadOne @3 :LeadData;
leadTwo @4 :LeadData;
cumLagMs @5 :Float32;
struct LeadData {
dRel @0 :Float32;
yRel @1 :Float32;
vRel @2 :Float32;
aRel @3 :Float32;
vLead @4 :Float32;
dPath @6 :Float32;
vLat @7 :Float32;
vLeadK @8 :Float32;
aLeadK @9 :Float32;
fcw @10 :Bool;
status @11 :Bool;
aLeadTau @12 :Float32;
modelProb @13 :Float32;
radar @14 :Bool;
aLeadDEPRECATED @5 :Float32;
}
# deprecated
ftMonoTimeDEPRECATED @7 :UInt64;
warpMatrixDEPRECATED @0 :List(Float32);
angleOffsetDEPRECATED @1 :Float32;
calStatusDEPRECATED @2 :Int8;
calCycleDEPRECATED @8 :Int32;
calPercDEPRECATED @9 :Int8;
}
struct LiveCalibrationData {
calStatus @1 :Int8;
calCycle @2 :Int32;
calPerc @3 :Int8;
validBlocks @9 :Int32;
# view_frame_from_road_frame
# ui's is inversed needs new
extrinsicMatrix @4 :List(Float32);
# the direction of travel vector in device frame
rpyCalib @7 :List(Float32);
rpyCalibSpread @8 :List(Float32);
warpMatrixDEPRECATED @0 :List(Float32);
warpMatrix2DEPRECATED @5 :List(Float32);
warpMatrixBigDEPRECATED @6 :List(Float32);
}
struct LiveTracks {
trackId @0 :Int32;
dRel @1 :Float32;
yRel @2 :Float32;
vRel @3 :Float32;
aRel @4 :Float32;
timeStamp @5 :Float32;
status @6 :Float32;
currentTime @7 :Float32;
stationary @8 :Bool;
oncoming @9 :Bool;
}
struct ControlsState @0x97ff69c53601abf1 {
startMonoTime @48 :UInt64;
canMonoTimes @21 :List(UInt64);
longitudinalPlanMonoTime @28 :UInt64;
lateralPlanMonoTime @50 :UInt64;
state @31 :OpenpilotState;
enabled @19 :Bool;
active @36 :Bool;
longControlState @30 :Car.CarControl.Actuators.LongControlState;
vPid @2 :Float32;
vTargetLead @3 :Float32;
vCruise @22 :Float32;
upAccelCmd @4 :Float32;
uiAccelCmd @5 :Float32;
ufAccelCmd @33 :Float32;
aTarget @35 :Float32;
curvature @37 :Float32; # path curvature from vehicle model
forceDecel @51 :Bool;
# UI alerts
alertText1 @24 :Text;
alertText2 @25 :Text;
alertStatus @38 :AlertStatus;
alertSize @39 :AlertSize;
alertBlinkingRate @42 :Float32;
alertType @44 :Text;
alertSound @56 :Car.CarControl.HUDControl.AudibleAlert;
engageable @41 :Bool; # can OP be engaged?
cumLagMs @15 :Float32;
canErrorCounter @57 :UInt32;
lateralControlState :union {
indiState @52 :LateralINDIState;
pidState @53 :LateralPIDState;
lqrState @55 :LateralLQRState;
angleState @58 :LateralAngleState;
debugState @59 :LateralDebugState;
}
enum OpenpilotState @0xdbe58b96d2d1ac61 {
disabled @0;
preEnabled @1;
enabled @2;
softDisabling @3;
}
enum AlertStatus {
normal @0; # low priority alert for user's convenience
userPrompt @1; # mid priority alert that might require user intervention
critical @2; # high priority alert that needs immediate user intervention
}
enum AlertSize {
none @0; # don't display the alert
small @1; # small box
mid @2; # mid screen
full @3; # full screen
}
struct LateralINDIState {
active @0 :Bool;
steeringAngleDeg @1 :Float32;
steeringRateDeg @2 :Float32;
steeringAccelDeg @3 :Float32;
rateSetPoint @4 :Float32;
accelSetPoint @5 :Float32;
accelError @6 :Float32;
delayedOutput @7 :Float32;
delta @8 :Float32;
output @9 :Float32;
saturated @10 :Bool;
}
struct LateralPIDState {
active @0 :Bool;
steeringAngleDeg @1 :Float32;
steeringRateDeg @2 :Float32;
angleError @3 :Float32;
p @4 :Float32;
i @5 :Float32;
f @6 :Float32;
output @7 :Float32;
saturated @8 :Bool;
}
struct LateralLQRState {
active @0 :Bool;
steeringAngleDeg @1 :Float32;
i @2 :Float32;
output @3 :Float32;
lqrOutput @4 :Float32;
saturated @5 :Bool;
}
struct LateralAngleState {
active @0 :Bool;
steeringAngleDeg @1 :Float32;
output @2 :Float32;
saturated @3 :Bool;
}
struct LateralDebugState {
active @0 :Bool;
steeringAngleDeg @1 :Float32;
output @2 :Float32;
saturated @3 :Bool;
}
# deprecated
vEgoDEPRECATED @0 :Float32;
vEgoRawDEPRECATED @32 :Float32;
aEgoDEPRECATED @1 :Float32;
canMonoTimeDEPRECATED @16 :UInt64;
radarStateMonoTimeDEPRECATED @17 :UInt64;
mdMonoTimeDEPRECATED @18 :UInt64;
yActualDEPRECATED @6 :Float32;
yDesDEPRECATED @7 :Float32;
upSteerDEPRECATED @8 :Float32;
uiSteerDEPRECATED @9 :Float32;
ufSteerDEPRECATED @34 :Float32;
aTargetMinDEPRECATED @10 :Float32;
aTargetMaxDEPRECATED @11 :Float32;
rearViewCamDEPRECATED @23 :Bool;
driverMonitoringOnDEPRECATED @43 :Bool;
hudLeadDEPRECATED @14 :Int32;
alertSoundDEPRECATED @45 :Text;
angleModelBiasDEPRECATED @27 :Float32;
gpsPlannerActiveDEPRECATED @40 :Bool;
decelForTurnDEPRECATED @47 :Bool;
decelForModelDEPRECATED @54 :Bool;
awarenessStatusDEPRECATED @26 :Float32;
angleSteers @13 :Float32; # dp
vCurvatureDEPRECATED @46 :Float32;
mapValidDEPRECATED @49 :Bool;
jerkFactorDEPRECATED @12 :Float32;
steerOverrideDEPRECATED @20 :Bool;
steeringAngleDesiredDeg @29 :Float32; # dp
}
struct ModelDataV2 {
frameId @0 :UInt32;
frameAge @1 :UInt32;
frameDropPerc @2 :Float32;
timestampEof @3 :UInt64;
modelExecutionTime @15 :Float32;
gpuExecutionTime @17 :Float32;
rawPredictions @16 :Data;
# predicted future position, orientation, etc..
position @4 :XYZTData;
orientation @5 :XYZTData;
velocity @6 :XYZTData;
orientationRate @7 :XYZTData;
# prediction lanelines and road edges
laneLines @8 :List(XYZTData);
laneLineProbs @9 :List(Float32);
laneLineStds @13 :List(Float32);
roadEdges @10 :List(XYZTData);
roadEdgeStds @14 :List(Float32);
# predicted lead cars
leads @11 :List(LeadDataV2);
leadsV3 @18 :List(LeadDataV3);
meta @12 :MetaData;
# All SI units and in device frame
struct XYZTData {
x @0 :List(Float32);
y @1 :List(Float32);
z @2 :List(Float32);
t @3 :List(Float32);
xStd @4 :List(Float32);
yStd @5 :List(Float32);
zStd @6 :List(Float32);
}
struct LeadDataV2 {
prob @0 :Float32; # probability that car is your lead at time t
t @1 :Float32;
# x and y are relative position in device frame
# v is norm relative speed
# a is norm relative acceleration
xyva @2 :List(Float32);
xyvaStd @3 :List(Float32);
}
struct LeadDataV3 {
prob @0 :Float32; # probability that car is your lead at time t
probTime @1 :Float32;
t @2 :List(Float32);
# x and y are relative position in device frame
# v absolute norm speed
# a is derivative of v
x @3 :List(Float32);
xStd @4 :List(Float32);
y @5 :List(Float32);
yStd @6 :List(Float32);
v @7 :List(Float32);
vStd @8 :List(Float32);
a @9 :List(Float32);
aStd @10 :List(Float32);
}
struct MetaData {
engagedProb @0 :Float32;
desirePrediction @1 :List(Float32);
desireState @5 :List(Float32);
disengagePredictions @6 :DisengagePredictions;
hardBrakePredicted @7 :Bool;
# deprecated
brakeDisengageProbDEPRECATED @2 :Float32;
gasDisengageProbDEPRECATED @3 :Float32;
steerOverrideProbDEPRECATED @4 :Float32;
}
struct DisengagePredictions {
t @0 :List(Float32);
brakeDisengageProbs @1 :List(Float32);
gasDisengageProbs @2 :List(Float32);
steerOverrideProbs @3 :List(Float32);
brake3MetersPerSecondSquaredProbs @4 :List(Float32);
brake4MetersPerSecondSquaredProbs @5 :List(Float32);
brake5MetersPerSecondSquaredProbs @6 :List(Float32);
}
}
struct EncodeIndex {
# picture from camera
frameId @0 :UInt32;
type @1 :Type;
# index of encoder from start of route
encodeId @2 :UInt32;
# minute long segment this frame is in
segmentNum @3 :Int32;
# index into camera file in segment in presentation order
segmentId @4 :UInt32;
# index into camera file in segment in encode order
segmentIdEncode @5 :UInt32;
timestampSof @6 :UInt64;
timestampEof @7 :UInt64;
enum Type {
bigBoxLossless @0; # rcamera.mkv
fullHEVC @1; # fcamera.hevc
bigBoxHEVC @2; # bcamera.hevc
chffrAndroidH264 @3; # acamera
fullLosslessClip @4; # prcamera.mkv
front @5; # dcamera.hevc
}
}
struct AndroidLogEntry {
id @0 :UInt8;
ts @1 :UInt64;
priority @2 :UInt8;
pid @3 :Int32;
tid @4 :Int32;
tag @5 :Text;
message @6 :Text;
}
struct LongitudinalPlan @0xe00b5b3eba12876c {
modelMonoTime @9 :UInt64;
hasLead @7 :Bool;
fcw @8 :Bool;
longitudinalPlanSource @15 :LongitudinalPlanSource;
processingDelay @29 :Float32;
# desired speed/accel/jerk over next 2.5s
accels @32 :List(Float32);
speeds @33 :List(Float32);
jerks @34 :List(Float32);
visionTurnControllerState @35 :VisionTurnControllerState;
visionTurnSpeed @36 :Float32;
speedLimitControlState @37 :SpeedLimitControlState;
speedLimit @38 :Float32;
speedLimitOffset @39 :Float32;
distToSpeedLimit @40 :Float32;
isMapSpeedLimit @41 :Bool;
distToTurn @42 :Float32;
turnSpeed @43 :Float32;
turnSpeedControlState @44 :SpeedLimitControlState;
turnSign @45 :Int16;
enum LongitudinalPlanSource {
cruise @0;
lead0 @1;
lead1 @2;
lead2 @3;
e2e @4;
turn @5;
limit @6;
turnlimit @7;
}
# deprecated
vCruiseDEPRECATED @16 :Float32;
aCruiseDEPRECATED @17 :Float32;
vTargetDEPRECATED @3 :Float32;
vTargetFutureDEPRECATED @14 :Float32;
aTargetDEPRECATED @18 :Float32;
vStartDEPRECATED @26 :Float32;
aStartDEPRECATED @27 :Float32;
vMaxDEPRECATED @20 :Float32;
radarStateMonoTimeDEPRECATED @10 :UInt64;
jerkFactorDEPRECATED @6 :Float32;
hasLeftLaneDEPRECATED @23 :Bool;
hasRightLaneDEPRECATED @24 :Bool;
aTargetMinDEPRECATED @4 :Float32;
aTargetMaxDEPRECATED @5 :Float32;
lateralValidDEPRECATED @0 :Bool;
longitudinalValidDEPRECATED @2 :Bool;
dPolyDEPRECATED @1 :List(Float32);
laneWidthDEPRECATED @11 :Float32;
vCurvatureDEPRECATED @21 :Float32;
decelForTurnDEPRECATED @22 :Bool;
mapValidDEPRECATED @25 :Bool;
radarValidDEPRECATED @28 :Bool;
radarCanErrorDEPRECATED @30 :Bool;
commIssueDEPRECATED @31 :Bool;
eventsDEPRECATED @13 :List(Car.CarEvent);
gpsTrajectoryDEPRECATED @12 :GpsTrajectory;
gpsPlannerActiveDEPRECATED @19 :Bool;
struct GpsTrajectory {
x @0 :List(Float32);
y @1 :List(Float32);
}
enum SpeedLimitControlState {
inactive @0; # No speed limit set or not enabled by parameter.
tempInactive @1; # User wants to ignore speed limit until it changes.
adapting @2; # Reducing speed to match new speed limit.
active @3; # Cruising at speed limit.
}
enum VisionTurnControllerState {
disabled @0; # No predicted substancial turn on vision range or feature disabled.
entering @1; # A subsantial turn is predicted ahead, adapting speed to turn confort levels.
turning @2; # Actively turning. Managing acceleration to provide a roll on turn feeling.
leaving @3; # Road ahead straightens. Start to allow positive acceleration.
}
}
struct LateralPlan @0xe1e9318e2ae8b51e {
laneWidth @0 :Float32;
lProb @5 :Float32;
rProb @7 :Float32;
dPathPoints @20 :List(Float32);
dProb @21 :Float32;
dPathWLinesX @30 :List(Float32);
dPathWLinesY @31 :List(Float32);
mpcSolutionValid @9 :Bool;
desire @17 :Desire;
laneChangeState @18 :LaneChangeState;
laneChangeDirection @19 :LaneChangeDirection;
# desired curvatures over next 2.5s in rad/m
psis @26 :List(Float32);
curvatures @27 :List(Float32);
curvatureRates @28 :List(Float32);
# dp
dpALCAStartIn @29 :Float32;
# 30~31 are being used in mapd
dpLaneLessModeStatus @32 :Bool;
enum Desire {
none @0;
turnLeft @1;
turnRight @2;
laneChangeLeft @3;
laneChangeRight @4;
keepLeft @5;
keepRight @6;
}
enum LaneChangeState {
off @0;
preLaneChange @1;
laneChangeStarting @2;
laneChangeFinishing @3;
}
enum LaneChangeDirection {
none @0;
left @1;
right @2;
}
# deprecated
curvatureDEPRECATED @22 :Float32;
curvatureRateDEPRECATED @23 :Float32;
rawCurvatureDEPRECATED @24 :Float32;
rawCurvatureRateDEPRECATED @25 :Float32;
cProbDEPRECATED @3 :Float32;
dPolyDEPRECATED @1 :List(Float32);
cPolyDEPRECATED @2 :List(Float32);
lPolyDEPRECATED @4 :List(Float32);
rPolyDEPRECATED @6 :List(Float32);
modelValidDEPRECATED @12 :Bool;
commIssueDEPRECATED @15 :Bool;
posenetValidDEPRECATED @16 :Bool;
sensorValidDEPRECATED @14 :Bool;
paramsValidDEPRECATED @10 :Bool;
steeringAngleDegDEPRECATED @8 :Float32; # deg
steeringRateDegDEPRECATED @13 :Float32; # deg/s
angleOffsetDegDEPRECATED @11 :Float32;
}
struct LiveLocationKalman {
# More info on reference frames:
# https://github.com/commaai/openpilot/tree/master/common/transformations
positionECEF @0 : Measurement;
positionGeodetic @1 : Measurement;
velocityECEF @2 : Measurement;
velocityNED @3 : Measurement;
velocityDevice @4 : Measurement;
accelerationDevice @5: Measurement;
# These angles are all eulers and roll, pitch, yaw
# orientationECEF transforms to rot matrix: ecef_from_device
orientationECEF @6 : Measurement;
calibratedOrientationECEF @20 : Measurement;
orientationNED @7 : Measurement;
angularVelocityDevice @8 : Measurement;
# orientationNEDCalibrated transforms to rot matrix: NED_from_calibrated
calibratedOrientationNED @9 : Measurement;
# Calibrated frame is simply device frame
# aligned with the vehicle
velocityCalibrated @10 : Measurement;
accelerationCalibrated @11 : Measurement;
angularVelocityCalibrated @12 : Measurement;
gpsWeek @13 :Int32;
gpsTimeOfWeek @14 :Float64;
status @15 :Status;
unixTimestampMillis @16 :Int64;
inputsOK @17 :Bool = true;
posenetOK @18 :Bool = true;
gpsOK @19 :Bool = true;
sensorsOK @21 :Bool = true;
deviceStable @22 :Bool = true;
timeSinceReset @23 :Float64;
excessiveResets @24 :Bool;
enum Status {
uninitialized @0;
uncalibrated @1;
valid @2;
}
struct Measurement {
value @0 : List(Float64);
std @1 : List(Float64);
valid @2 : Bool;
}
}
struct ProcLog {
cpuTimes @0 :List(CPUTimes);
mem @1 :Mem;
procs @2 :List(Process);
struct Process {
pid @0 :Int32;
name @1 :Text;
state @2 :UInt8;
ppid @3 :Int32;
cpuUser @4 :Float32;
cpuSystem @5 :Float32;
cpuChildrenUser @6 :Float32;
cpuChildrenSystem @7 :Float32;
priority @8 :Int64;
nice @9 :Int32;
numThreads @10 :Int32;
startTime @11 :Float64;
memVms @12 :UInt64;
memRss @13 :UInt64;
processor @14 :Int32;
cmdline @15 :List(Text);
exe @16 :Text;
}
struct CPUTimes {
cpuNum @0 :Int64;
user @1 :Float32;
nice @2 :Float32;
system @3 :Float32;
idle @4 :Float32;
iowait @5 :Float32;
irq @6 :Float32;
softirq @7 :Float32;
}
struct Mem {
total @0 :UInt64;
free @1 :UInt64;
available @2 :UInt64;
buffers @3 :UInt64;
cached @4 :UInt64;
active @5 :UInt64;
inactive @6 :UInt64;
shared @7 :UInt64;
}
}
struct UbloxGnss {
union {
measurementReport @0 :MeasurementReport;
ephemeris @1 :Ephemeris;
ionoData @2 :IonoData;
hwStatus @3 :HwStatus;
hwStatus2 @4 :HwStatus2;
}
struct MeasurementReport {
#received time of week in gps time in seconds and gps week
rcvTow @0 :Float64;
gpsWeek @1 :UInt16;
# leap seconds in seconds
leapSeconds @2 :UInt16;
# receiver status
receiverStatus @3 :ReceiverStatus;
# num of measurements to follow
gitextract_fiiqppqd/
├── .gitignore
├── CHANGELOGS-DEV.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── HOWTO-ONEPLUS.md
├── HOWTO-Translate.md
├── Jenkinsfile
├── LICENSE
├── README-openpilot.md
├── README.md
├── RELEASES.md
├── SAFETY.md
├── SConstruct
├── cereal/
│ ├── .gitignore
│ ├── SConscript
│ ├── __init__.py
│ ├── car.capnp
│ ├── dp.capnp
│ ├── include/
│ │ ├── c++.capnp
│ │ └── java.capnp
│ ├── legacy.capnp
│ ├── log.capnp
│ ├── logger/
│ │ └── logger.h
│ ├── messaging/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── bridge.cc
│ │ ├── impl_msgq.cc
│ │ ├── impl_msgq.h
│ │ ├── impl_zmq.cc
│ │ ├── impl_zmq.h
│ │ ├── messaging.cc
│ │ ├── messaging.h
│ │ ├── messaging.pxd
│ │ ├── messaging_pyx.pyx
│ │ ├── msgq.cc
│ │ ├── msgq.h
│ │ └── socketmaster.cc
│ ├── services.py
│ └── visionipc/
│ ├── .gitignore
│ ├── __init__.py
│ ├── ipc.cc
│ ├── ipc.h
│ ├── test_runner.cc
│ ├── visionbuf.cc
│ ├── visionbuf.h
│ ├── visionbuf_cl.cc
│ ├── visionbuf_ion.cc
│ ├── visionipc.h
│ ├── visionipc.pxd
│ ├── visionipc_client.cc
│ ├── visionipc_client.h
│ ├── visionipc_pyx.pyx
│ ├── visionipc_server.cc
│ ├── visionipc_server.h
│ └── visionipc_tests.cc
├── common/
│ ├── .gitignore
│ ├── SConscript
│ ├── __init__.py
│ ├── api/
│ │ └── __init__.py
│ ├── basedir.py
│ ├── clock.pyx
│ ├── cython_hacks.py
│ ├── dict_helpers.py
│ ├── dp_common.py
│ ├── dp_conf.py
│ ├── dp_time.py
│ ├── ffi_wrapper.py
│ ├── file_helpers.py
│ ├── filter_simple.py
│ ├── gpio.py
│ ├── i18n.py
│ ├── kalman/
│ │ ├── .gitignore
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── simple_kalman.py
│ │ ├── simple_kalman_impl.pxd
│ │ ├── simple_kalman_impl.pyx
│ │ ├── simple_kalman_old.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ └── test_simple_kalman.py
│ ├── logging_extra.py
│ ├── numpy_fast.py
│ ├── params.py
│ ├── params_pxd.pxd
│ ├── params_pyx.pyx
│ ├── profiler.py
│ ├── realtime.py
│ ├── spinner.py
│ ├── stat_live.py
│ ├── text_window.py
│ ├── timeout.py
│ ├── transformations/
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── camera.py
│ │ ├── coordinates.cc
│ │ ├── coordinates.hpp
│ │ ├── coordinates.py
│ │ ├── model.py
│ │ ├── orientation.cc
│ │ ├── orientation.hpp
│ │ ├── orientation.py
│ │ ├── transformations.pxd
│ │ └── transformations.pyx
│ └── xattr.py
├── installer/
│ ├── custom/
│ │ ├── install_gfortran.sh
│ │ └── termux-elf-cleaner/
│ │ ├── COPYING
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── elf.h
│ │ └── termux-elf-cleaner.cpp
│ └── updater/
│ ├── Makefile
│ ├── oneplus.json
│ ├── update.json
│ └── updater
├── jetson/
│ ├── env_installer.sh
│ ├── launcher.sh
│ ├── openpilot_env.sh
│ └── release.py
├── launch_chffrplus.sh
├── launch_env.sh
├── launch_openpilot.sh
├── models/
│ └── supercombo.onnx
├── opendbc/
│ ├── .gitignore
│ ├── __init__.py
│ ├── acura_ilx_2016_can_generated.dbc
│ ├── acura_ilx_2016_nidec.dbc
│ ├── acura_rdx_2018_can_generated.dbc
│ ├── acura_rdx_2020_can_generated.dbc
│ ├── can/
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── can_define.py
│ │ ├── common.cc
│ │ ├── common.h
│ │ ├── common.pxd
│ │ ├── common_dbc.h
│ │ ├── dbc.cc
│ │ ├── dbc.py
│ │ ├── dbc_out/
│ │ │ ├── .gitignore
│ │ │ └── .gitkeep
│ │ ├── dbc_template.cc
│ │ ├── packer.cc
│ │ ├── packer.py
│ │ ├── packer_pyx.pyx
│ │ ├── parser.cc
│ │ ├── parser.py
│ │ ├── parser_pyx.pyx
│ │ └── process_dbc.py
│ ├── chrysler_pacifica_2017_hybrid.dbc
│ ├── chrysler_pacifica_2017_hybrid_private_fusion.dbc
│ ├── ford_fusion_2018_adas.dbc
│ ├── ford_fusion_2018_pt.dbc
│ ├── gm_global_a_chassis.dbc
│ ├── gm_global_a_object.dbc
│ ├── gm_global_a_powertrain.dbc
│ ├── honda_accord_2018_can_generated.dbc
│ ├── honda_civic_hatchback_ex_2017_can_generated.dbc
│ ├── honda_civic_sedan_16_diesel_2019_can_generated.dbc
│ ├── honda_civic_touring_2016_can_generated.dbc
│ ├── honda_crv_ex_2017_body_generated.dbc
│ ├── honda_crv_ex_2017_can_generated.dbc
│ ├── honda_crv_executive_2016_can_generated.dbc
│ ├── honda_crv_hybrid_2019_can_generated.dbc
│ ├── honda_crv_touring_2016_can_generated.dbc
│ ├── honda_fit_ex_2018_can_generated.dbc
│ ├── honda_insight_ex_2019_can_generated.dbc
│ ├── honda_odyssey_exl_2018_generated.dbc
│ ├── honda_odyssey_extreme_edition_2018_china_can_generated.dbc
│ ├── honda_pilot_touring_2017_can_generated.dbc
│ ├── honda_ridgeline_black_edition_2017_can_generated.dbc
│ ├── hyundai_kia_generic.dbc
│ ├── lexus_ct200h_2018_pt_generated.dbc
│ ├── lexus_is300h_2017_pt_generated.dbc
│ ├── lexus_is_2018_pt_generated.dbc
│ ├── lexus_nx300_2018_pt_generated.dbc
│ ├── lexus_nx300h_2018_pt_generated.dbc
│ ├── lexus_rx_350_2016_pt_generated.dbc
│ ├── lexus_rx_hybrid_2017_pt_generated.dbc
│ ├── mazda_2017.dbc
│ ├── nissan_leaf_2018.dbc
│ ├── nissan_x_trail_2017.dbc
│ ├── subaru_forester_2017_generated.dbc
│ ├── subaru_global_2017_generated.dbc
│ ├── subaru_outback_2015_generated.dbc
│ ├── subaru_outback_2019_generated.dbc
│ ├── tesla_can.dbc
│ ├── tesla_radar.dbc
│ ├── toyota_adas.dbc
│ ├── toyota_avalon_2017_pt_generated.dbc
│ ├── toyota_camry_hybrid_2018_pt_generated.dbc
│ ├── toyota_corolla_2017_pt_generated.dbc
│ ├── toyota_highlander_2017_pt_generated.dbc
│ ├── toyota_highlander_hybrid_2018_pt_generated.dbc
│ ├── toyota_nodsu_hybrid_pt_generated.dbc
│ ├── toyota_nodsu_pt_generated.dbc
│ ├── toyota_prius_2017_pt_generated.dbc
│ ├── toyota_prius_alpha_2017_pt_generated.dbc
│ ├── toyota_rav4_2017_pt_generated.dbc
│ ├── toyota_rav4_hybrid_2017_pt_generated.dbc
│ ├── toyota_sienna_xle_2018_pt_generated.dbc
│ ├── toyota_tss2_adas.dbc
│ └── vw_mqb_2010.dbc
├── panda/
│ ├── .gitignore
│ ├── __init__.py
│ ├── board/
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── boards/
│ │ │ ├── black.h
│ │ │ ├── board_declarations.h
│ │ │ ├── dos.h
│ │ │ ├── grey.h
│ │ │ ├── pedal.h
│ │ │ ├── red.h
│ │ │ ├── uno.h
│ │ │ ├── unused_funcs.h
│ │ │ └── white.h
│ │ ├── bootstub.c
│ │ ├── bootstub_declarations.h
│ │ ├── build_all.sh
│ │ ├── config.h
│ │ ├── crc.h
│ │ ├── critical.h
│ │ ├── drivers/
│ │ │ ├── bxcan.h
│ │ │ ├── can_common.h
│ │ │ ├── fan.h
│ │ │ ├── fdcan.h
│ │ │ ├── gmlan_alt.h
│ │ │ ├── gpio.h
│ │ │ ├── harness.h
│ │ │ ├── interrupts.h
│ │ │ ├── kline_init.h
│ │ │ ├── pwm.h
│ │ │ ├── registers.h
│ │ │ ├── rtc.h
│ │ │ ├── timers.h
│ │ │ ├── uart.h
│ │ │ └── usb.h
│ │ ├── early_init.h
│ │ ├── faults.h
│ │ ├── flash.sh
│ │ ├── flash_h7.sh
│ │ ├── flasher.h
│ │ ├── get_sdk.sh
│ │ ├── get_sdk_mac.sh
│ │ ├── libc.h
│ │ ├── main.c
│ │ ├── main_declarations.h
│ │ ├── obj/
│ │ │ └── .placeholder
│ │ ├── pedal/
│ │ │ ├── .gitignore
│ │ │ ├── README
│ │ │ ├── flash_can.sh
│ │ │ ├── main.c
│ │ │ ├── main_declarations.h
│ │ │ └── recover.sh
│ │ ├── power_saving.h
│ │ ├── provision.h
│ │ ├── recover.sh
│ │ ├── recover_h7.sh
│ │ ├── safety/
│ │ │ ├── safety_chrysler.h
│ │ │ ├── safety_defaults.h
│ │ │ ├── safety_elm327.h
│ │ │ ├── safety_ford.h
│ │ │ ├── safety_gm.h
│ │ │ ├── safety_gm_ascm.h
│ │ │ ├── safety_honda.h
│ │ │ ├── safety_hyundai.h
│ │ │ ├── safety_mazda.h
│ │ │ ├── safety_nissan.h
│ │ │ ├── safety_subaru.h
│ │ │ ├── safety_tesla.h
│ │ │ ├── safety_toyota.h
│ │ │ └── safety_volkswagen.h
│ │ ├── safety.h
│ │ ├── safety_declarations.h
│ │ ├── stm32fx/
│ │ │ ├── board.h
│ │ │ ├── clock.h
│ │ │ ├── clock_source.h
│ │ │ ├── inc/
│ │ │ │ ├── cmsis_compiler.h
│ │ │ │ ├── cmsis_gcc.h
│ │ │ │ ├── cmsis_version.h
│ │ │ │ ├── core_cm3.h
│ │ │ │ ├── core_cm4.h
│ │ │ │ ├── mpu_armv7.h
│ │ │ │ ├── stm32f205xx.h
│ │ │ │ ├── stm32f2xx.h
│ │ │ │ ├── stm32f2xx_hal_def.h
│ │ │ │ ├── stm32f2xx_hal_gpio_ex.h
│ │ │ │ ├── stm32f413xx.h
│ │ │ │ ├── stm32f4xx.h
│ │ │ │ ├── stm32f4xx_hal_def.h
│ │ │ │ ├── stm32f4xx_hal_gpio_ex.h
│ │ │ │ ├── system_stm32f2xx.h
│ │ │ │ └── system_stm32f4xx.h
│ │ │ ├── interrupt_handlers.h
│ │ │ ├── lladc.h
│ │ │ ├── llbxcan.h
│ │ │ ├── lldac.h
│ │ │ ├── llfan.h
│ │ │ ├── llflash.h
│ │ │ ├── llrtc.h
│ │ │ ├── llspi.h
│ │ │ ├── lluart.h
│ │ │ ├── llusb.h
│ │ │ ├── peripherals.h
│ │ │ ├── startup_stm32f205xx.s
│ │ │ ├── startup_stm32f413xx.s
│ │ │ ├── stm32fx_config.h
│ │ │ └── stm32fx_flash.ld
│ │ ├── stm32h7/
│ │ │ ├── board.h
│ │ │ ├── clock.h
│ │ │ ├── inc/
│ │ │ │ ├── cmsis_compiler.h
│ │ │ │ ├── cmsis_gcc.h
│ │ │ │ ├── cmsis_version.h
│ │ │ │ ├── core_cm7.h
│ │ │ │ ├── mpu_armv8.h
│ │ │ │ ├── stm32h725xx.h
│ │ │ │ ├── stm32h735xx.h
│ │ │ │ ├── stm32h7xx.h
│ │ │ │ ├── stm32h7xx_hal_def.h
│ │ │ │ ├── stm32h7xx_hal_gpio_ex.h
│ │ │ │ └── system_stm32h7xx.h
│ │ │ ├── interrupt_handlers.h
│ │ │ ├── lladc.h
│ │ │ ├── llfan.h
│ │ │ ├── llfdcan.h
│ │ │ ├── llflash.h
│ │ │ ├── llrtc.h
│ │ │ ├── lluart.h
│ │ │ ├── llusb.h
│ │ │ ├── peripherals.h
│ │ │ ├── startup_stm32h7x5xx.s
│ │ │ ├── stm32h7_config.h
│ │ │ └── stm32h7x5_flash.ld
│ │ └── tests/
│ │ └── test_rsa.c
│ ├── certs/
│ │ ├── debug
│ │ ├── debug.pub
│ │ └── release.pub
│ ├── crypto/
│ │ ├── hash-internal.h
│ │ ├── rsa.c
│ │ ├── rsa.h
│ │ ├── sha.c
│ │ ├── sha.h
│ │ ├── sign.py
│ │ └── stdint.h
│ ├── examples/
│ │ └── query_fw_versions.py
│ └── python/
│ ├── __init__.py
│ ├── config.py
│ ├── dfu.py
│ ├── flash_release.py
│ ├── isotp.py
│ ├── serial.py
│ ├── uds.py
│ └── update.py
├── phonelibs/
│ ├── SConscript
│ ├── android_frameworks_native/
│ │ ├── get.txt
│ │ └── include/
│ │ ├── android/
│ │ │ ├── asset_manager.h
│ │ │ ├── asset_manager_jni.h
│ │ │ ├── bitmap.h
│ │ │ ├── configuration.h
│ │ │ ├── input.h
│ │ │ ├── keycodes.h
│ │ │ ├── looper.h
│ │ │ ├── multinetwork.h
│ │ │ ├── native_activity.h
│ │ │ ├── native_window.h
│ │ │ ├── native_window_jni.h
│ │ │ ├── obb.h
│ │ │ ├── rect.h
│ │ │ ├── sensor.h
│ │ │ ├── storage_manager.h
│ │ │ ├── trace.h
│ │ │ └── window.h
│ │ ├── binder/
│ │ │ ├── AppOpsManager.h
│ │ │ ├── Binder.h
│ │ │ ├── BinderService.h
│ │ │ ├── BpBinder.h
│ │ │ ├── BufferedTextOutput.h
│ │ │ ├── Debug.h
│ │ │ ├── IAppOpsCallback.h
│ │ │ ├── IAppOpsService.h
│ │ │ ├── IBatteryStats.h
│ │ │ ├── IBinder.h
│ │ │ ├── IInterface.h
│ │ │ ├── IMemory.h
│ │ │ ├── IPCThreadState.h
│ │ │ ├── IPermissionController.h
│ │ │ ├── IProcessInfoService.h
│ │ │ ├── IServiceManager.h
│ │ │ ├── MemoryBase.h
│ │ │ ├── MemoryDealer.h
│ │ │ ├── MemoryHeapBase.h
│ │ │ ├── MemoryHeapIon.h
│ │ │ ├── Parcel.h
│ │ │ ├── PermissionCache.h
│ │ │ ├── ProcessInfoService.h
│ │ │ ├── ProcessState.h
│ │ │ └── TextOutput.h
│ │ ├── gui/
│ │ │ ├── BitTube.h
│ │ │ ├── BufferItem.h
│ │ │ ├── BufferItemConsumer.h
│ │ │ ├── BufferQueue.h
│ │ │ ├── BufferQueueConsumer.h
│ │ │ ├── BufferQueueCore.h
│ │ │ ├── BufferQueueDefs.h
│ │ │ ├── BufferQueueProducer.h
│ │ │ ├── BufferSlot.h
│ │ │ ├── ConsumerBase.h
│ │ │ ├── CpuConsumer.h
│ │ │ ├── DisplayEventReceiver.h
│ │ │ ├── GLConsumer.h
│ │ │ ├── GraphicBufferAlloc.h
│ │ │ ├── GuiConfig.h
│ │ │ ├── IConsumerListener.h
│ │ │ ├── IDisplayEventConnection.h
│ │ │ ├── IGraphicBufferAlloc.h
│ │ │ ├── IGraphicBufferConsumer.h
│ │ │ ├── IGraphicBufferProducer.h
│ │ │ ├── IProducerListener.h
│ │ │ ├── ISensorEventConnection.h
│ │ │ ├── ISensorServer.h
│ │ │ ├── ISurfaceComposer.h
│ │ │ ├── ISurfaceComposerClient.h
│ │ │ ├── Sensor.h
│ │ │ ├── SensorEventQueue.h
│ │ │ ├── SensorManager.h
│ │ │ ├── StreamSplitter.h
│ │ │ ├── Surface.h
│ │ │ ├── SurfaceComposerClient.h
│ │ │ └── SurfaceControl.h
│ │ └── ui/
│ │ ├── ANativeObjectBase.h
│ │ ├── DisplayInfo.h
│ │ ├── DisplayStatInfo.h
│ │ ├── Fence.h
│ │ ├── FrameStats.h
│ │ ├── FramebufferNativeWindow.h
│ │ ├── GraphicBuffer.h
│ │ ├── GraphicBufferAllocator.h
│ │ ├── GraphicBufferMapper.h
│ │ ├── PixelFormat.h
│ │ ├── Point.h
│ │ ├── Rect.h
│ │ ├── Region.h
│ │ ├── TMatHelpers.h
│ │ ├── TVecHelpers.h
│ │ ├── UiConfig.h
│ │ ├── mat4.h
│ │ ├── vec2.h
│ │ ├── vec3.h
│ │ └── vec4.h
│ ├── android_hardware_libhardware/
│ │ └── include/
│ │ └── hardware/
│ │ ├── activity_recognition.h
│ │ ├── audio.h
│ │ ├── audio_alsaops.h
│ │ ├── audio_amplifier.h
│ │ ├── audio_effect.h
│ │ ├── audio_policy.h
│ │ ├── bluetooth.h
│ │ ├── bt_av.h
│ │ ├── bt_common_types.h
│ │ ├── bt_gatt.h
│ │ ├── bt_gatt_client.h
│ │ ├── bt_gatt_server.h
│ │ ├── bt_gatt_types.h
│ │ ├── bt_hd.h
│ │ ├── bt_hf.h
│ │ ├── bt_hf_client.h
│ │ ├── bt_hh.h
│ │ ├── bt_hl.h
│ │ ├── bt_mce.h
│ │ ├── bt_pan.h
│ │ ├── bt_rc.h
│ │ ├── bt_sdp.h
│ │ ├── bt_sock.h
│ │ ├── camera.h
│ │ ├── camera2.h
│ │ ├── camera3.h
│ │ ├── camera_common.h
│ │ ├── consumerir.h
│ │ ├── display_defs.h
│ │ ├── fb.h
│ │ ├── fingerprint.h
│ │ ├── fused_location.h
│ │ ├── gatekeeper.h
│ │ ├── gps.h
│ │ ├── gralloc.h
│ │ ├── hardware.h
│ │ ├── hdmi_cec.h
│ │ ├── hw_auth_token.h
│ │ ├── hwcomposer.h
│ │ ├── hwcomposer_defs.h
│ │ ├── input.h
│ │ ├── keymaster0.h
│ │ ├── keymaster1.h
│ │ ├── keymaster_common.h
│ │ ├── keymaster_defs.h
│ │ ├── lights.h
│ │ ├── local_time_hal.h
│ │ ├── memtrack.h
│ │ ├── nfc.h
│ │ ├── nfc_tag.h
│ │ ├── power.h
│ │ ├── qemu_pipe.h
│ │ ├── qemud.h
│ │ ├── radio.h
│ │ ├── sensors.h
│ │ ├── sound_trigger.h
│ │ ├── tv_input.h
│ │ ├── vibrator.h
│ │ └── wipower.h
│ ├── android_system_core/
│ │ └── include/
│ │ ├── cutils/
│ │ │ ├── android_reboot.h
│ │ │ ├── aref.h
│ │ │ ├── ashmem.h
│ │ │ ├── atomic.h
│ │ │ ├── bitops.h
│ │ │ ├── compiler.h
│ │ │ ├── config_utils.h
│ │ │ ├── debugger.h
│ │ │ ├── fs.h
│ │ │ ├── hashmap.h
│ │ │ ├── iosched_policy.h
│ │ │ ├── jstring.h
│ │ │ ├── klog.h
│ │ │ ├── list.h
│ │ │ ├── log.h
│ │ │ ├── memory.h
│ │ │ ├── misc.h
│ │ │ ├── multiuser.h
│ │ │ ├── native_handle.h
│ │ │ ├── open_memstream.h
│ │ │ ├── partition_utils.h
│ │ │ ├── process_name.h
│ │ │ ├── properties.h
│ │ │ ├── qtaguid.h
│ │ │ ├── record_stream.h
│ │ │ ├── sched_policy.h
│ │ │ ├── sockets.h
│ │ │ ├── str_parms.h
│ │ │ ├── threads.h
│ │ │ ├── trace.h
│ │ │ └── uevent.h
│ │ ├── log/
│ │ │ ├── event_tag_map.h
│ │ │ ├── log.h
│ │ │ ├── log_read.h
│ │ │ ├── logd.h
│ │ │ ├── logger.h
│ │ │ ├── logprint.h
│ │ │ └── uio.h
│ │ ├── system/
│ │ │ ├── camera.h
│ │ │ ├── graphics.h
│ │ │ ├── radio.h
│ │ │ ├── thread_defs.h
│ │ │ └── window.h
│ │ └── utils/
│ │ ├── AndroidThreads.h
│ │ ├── Atomic.h
│ │ ├── BasicHashtable.h
│ │ ├── BitSet.h
│ │ ├── BlobCache.h
│ │ ├── ByteOrder.h
│ │ ├── CallStack.h
│ │ ├── Compat.h
│ │ ├── Condition.h
│ │ ├── Debug.h
│ │ ├── Endian.h
│ │ ├── Errors.h
│ │ ├── FileMap.h
│ │ ├── Flattenable.h
│ │ ├── Functor.h
│ │ ├── JenkinsHash.h
│ │ ├── KeyedVector.h
│ │ ├── LinearTransform.h
│ │ ├── List.h
│ │ ├── Log.h
│ │ ├── Looper.h
│ │ ├── LruCache.h
│ │ ├── Mutex.h
│ │ ├── NativeHandle.h
│ │ ├── Printer.h
│ │ ├── ProcessCallStack.h
│ │ ├── PropertyMap.h
│ │ ├── RWLock.h
│ │ ├── RefBase.h
│ │ ├── SharedBuffer.h
│ │ ├── Singleton.h
│ │ ├── SortedVector.h
│ │ ├── StopWatch.h
│ │ ├── String16.h
│ │ ├── String8.h
│ │ ├── StrongPointer.h
│ │ ├── SystemClock.h
│ │ ├── Thread.h
│ │ ├── ThreadDefs.h
│ │ ├── Timers.h
│ │ ├── Tokenizer.h
│ │ ├── Trace.h
│ │ ├── TypeHelpers.h
│ │ ├── Unicode.h
│ │ ├── Vector.h
│ │ ├── VectorImpl.h
│ │ ├── ashmem.h
│ │ ├── misc.h
│ │ └── threads.h
│ ├── bzip2/
│ │ ├── LICENSE
│ │ ├── build.txt
│ │ └── bzlib.h
│ ├── json11/
│ │ ├── json11.cpp
│ │ └── json11.hpp
│ ├── kaitai/
│ │ ├── custom_decoder.h
│ │ ├── exceptions.h
│ │ ├── kaitaistream.cpp
│ │ ├── kaitaistream.h
│ │ └── kaitaistruct.h
│ ├── libgralloc/
│ │ └── include/
│ │ └── gralloc_priv.h
│ ├── libyuv/
│ │ └── include/
│ │ ├── libyuv/
│ │ │ ├── basic_types.h
│ │ │ ├── compare.h
│ │ │ ├── compare_row.h
│ │ │ ├── convert.h
│ │ │ ├── convert_argb.h
│ │ │ ├── convert_from.h
│ │ │ ├── convert_from_argb.h
│ │ │ ├── cpu_id.h
│ │ │ ├── macros_msa.h
│ │ │ ├── mjpeg_decoder.h
│ │ │ ├── planar_functions.h
│ │ │ ├── rotate.h
│ │ │ ├── rotate_argb.h
│ │ │ ├── rotate_row.h
│ │ │ ├── row.h
│ │ │ ├── scale.h
│ │ │ ├── scale_argb.h
│ │ │ ├── scale_row.h
│ │ │ ├── version.h
│ │ │ └── video_common.h
│ │ └── libyuv.h
│ ├── linux/
│ │ └── include/
│ │ ├── linux/
│ │ │ └── ion.h
│ │ └── msm_ion.h
│ ├── mapbox-gl-native-qt/
│ │ └── include/
│ │ ├── QMapbox
│ │ ├── QMapboxGL
│ │ ├── qmapbox.hpp
│ │ └── qmapboxgl.hpp
│ ├── nanovg/
│ │ ├── fontstash.h
│ │ ├── nanovg.c
│ │ ├── nanovg.h
│ │ ├── nanovg_gl.h
│ │ ├── nanovg_gl_utils.h
│ │ ├── stb_image.h
│ │ └── stb_truetype.h
│ ├── opencl/
│ │ └── include/
│ │ └── CL/
│ │ ├── cl.h
│ │ ├── cl_d3d10.h
│ │ ├── cl_d3d11.h
│ │ ├── cl_dx9_media_sharing.h
│ │ ├── cl_egl.h
│ │ ├── cl_ext.h
│ │ ├── cl_ext_qcom.h
│ │ ├── cl_gl.h
│ │ ├── cl_gl_ext.h
│ │ ├── cl_platform.h
│ │ └── opencl.h
│ ├── openmax/
│ │ └── include/
│ │ ├── OMX_Audio.h
│ │ ├── OMX_Component.h
│ │ ├── OMX_ContentPipe.h
│ │ ├── OMX_Core.h
│ │ ├── OMX_CoreExt.h
│ │ ├── OMX_IVCommon.h
│ │ ├── OMX_Image.h
│ │ ├── OMX_Index.h
│ │ ├── OMX_IndexExt.h
│ │ ├── OMX_Other.h
│ │ ├── OMX_QCOMExtns.h
│ │ ├── OMX_Skype_VideoExtensions.h
│ │ ├── OMX_Types.h
│ │ ├── OMX_Video.h
│ │ └── OMX_VideoExt.h
│ ├── qpoases/
│ │ ├── EXAMPLES/
│ │ │ ├── example1.cpp
│ │ │ └── example1b.cpp
│ │ ├── INCLUDE/
│ │ │ ├── Bounds.hpp
│ │ │ ├── Constants.hpp
│ │ │ ├── Constraints.hpp
│ │ │ ├── CyclingManager.hpp
│ │ │ ├── EXTRAS/
│ │ │ │ └── SolutionAnalysis.hpp
│ │ │ ├── Indexlist.hpp
│ │ │ ├── MessageHandling.hpp
│ │ │ ├── QProblem.hpp
│ │ │ ├── QProblemB.hpp
│ │ │ ├── SubjectTo.hpp
│ │ │ ├── Types.hpp
│ │ │ └── Utils.hpp
│ │ ├── LICENSE.txt
│ │ ├── README.txt
│ │ ├── SConscript
│ │ ├── SRC/
│ │ │ ├── Bounds.cpp
│ │ │ ├── Bounds.ipp
│ │ │ ├── Constraints.cpp
│ │ │ ├── Constraints.ipp
│ │ │ ├── CyclingManager.cpp
│ │ │ ├── CyclingManager.ipp
│ │ │ ├── EXTRAS/
│ │ │ │ └── SolutionAnalysis.cpp
│ │ │ ├── Indexlist.cpp
│ │ │ ├── Indexlist.ipp
│ │ │ ├── MessageHandling.cpp
│ │ │ ├── MessageHandling.ipp
│ │ │ ├── QProblem.cpp
│ │ │ ├── QProblem.ipp
│ │ │ ├── QProblemB.cpp
│ │ │ ├── QProblemB.ipp
│ │ │ ├── SubjectTo.cpp
│ │ │ ├── SubjectTo.ipp
│ │ │ ├── Utils.cpp
│ │ │ └── Utils.ipp
│ │ └── VERSIONS.txt
│ ├── qrcode/
│ │ ├── QrCode.cc
│ │ └── QrCode.hpp
│ ├── snpe/
│ │ └── include/
│ │ ├── DiagLog/
│ │ │ ├── IDiagLog.hpp
│ │ │ └── Options.hpp
│ │ ├── DlContainer/
│ │ │ └── IDlContainer.hpp
│ │ ├── DlSystem/
│ │ │ ├── DlEnums.hpp
│ │ │ ├── DlError.hpp
│ │ │ ├── DlOptional.hpp
│ │ │ ├── DlVersion.hpp
│ │ │ ├── IBufferAttributes.hpp
│ │ │ ├── ITensor.hpp
│ │ │ ├── ITensorFactory.hpp
│ │ │ ├── ITensorItr.hpp
│ │ │ ├── ITensorItrImpl.hpp
│ │ │ ├── IUDL.hpp
│ │ │ ├── IUserBuffer.hpp
│ │ │ ├── IUserBufferFactory.hpp
│ │ │ ├── PlatformConfig.hpp
│ │ │ ├── RuntimeList.hpp
│ │ │ ├── String.hpp
│ │ │ ├── StringList.hpp
│ │ │ ├── TensorMap.hpp
│ │ │ ├── TensorShape.hpp
│ │ │ ├── TensorShapeMap.hpp
│ │ │ ├── UDLContext.hpp
│ │ │ ├── UDLFunc.hpp
│ │ │ ├── UserBufferMap.hpp
│ │ │ └── ZdlExportDefine.hpp
│ │ ├── PlatformValidator/
│ │ │ └── PlatformValidator.hpp
│ │ ├── SNPE/
│ │ │ ├── ApplicationBufferMap.hpp
│ │ │ ├── PSNPE.hpp
│ │ │ ├── RuntimeConfigList.hpp
│ │ │ ├── SNPE.hpp
│ │ │ ├── SNPEBuilder.hpp
│ │ │ ├── SNPEFactory.hpp
│ │ │ └── UserBufferList.hpp
│ │ └── SnpeUdo/
│ │ ├── UdoBase.h
│ │ ├── UdoImpl.h
│ │ ├── UdoImplCpu.h
│ │ ├── UdoImplDsp.h
│ │ ├── UdoImplGpu.h
│ │ ├── UdoReg.h
│ │ └── UdoShared.h
│ └── zlib/
│ └── build.txt
├── pyextra/
│ └── .gitignore
├── rednose/
│ ├── SConscript
│ ├── helpers/
│ │ ├── __init__.py
│ │ ├── chi2_lookup.py
│ │ ├── chi2_lookup_table.npy
│ │ ├── common_ekf.cc
│ │ ├── common_ekf.h
│ │ ├── ekf_sym.cc
│ │ ├── ekf_sym.h
│ │ ├── ekf_sym.py
│ │ ├── ekf_sym_pyx.pyx
│ │ ├── feature_handler.py
│ │ ├── kalmanfilter.py
│ │ ├── lst_sq_computer.py
│ │ └── sympy_helpers.py
│ └── templates/
│ ├── compute_pos.c
│ ├── ekf_c.c
│ └── feature_handler.c
├── release/
│ ├── build_devel.sh
│ ├── build_release2.sh
│ ├── build_release3.sh
│ ├── check-submodules.sh
│ ├── files_common
│ ├── files_pc
│ ├── files_tici
│ └── identity.sh
├── scripts/
│ ├── complete_setup.sh
│ ├── installers/
│ │ ├── font_installer.py
│ │ ├── language_installer.py
│ │ └── sshkey_installer.py
│ ├── oneplus_update_neos.sh
│ ├── rebuild.sh
│ ├── reset_dp.sh
│ ├── reset_update.sh
│ ├── reset_usb.py
│ ├── ssh_key/
│ │ ├── id_rsa
│ │ └── setup_keys
│ ├── stop_updater.sh
│ ├── update_now.sh
│ ├── update_panda_firmware.sh
│ └── vw.sh
├── selfdrive/
│ ├── __init__.py
│ ├── assets/
│ │ ├── .gitignore
│ │ ├── assets.qrc
│ │ ├── fonts/
│ │ │ ├── NotoSansCJKtc-Bold.otf
│ │ │ ├── NotoSansCJKtc-Medium.otf
│ │ │ ├── NotoSansCJKtc-Regular.otf
│ │ │ └── fonts.xml
│ │ ├── locales/
│ │ │ ├── events.pot
│ │ │ ├── ja-JP/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── events.mo
│ │ │ │ └── events.po
│ │ │ ├── ko-KR/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── events.mo
│ │ │ │ └── events.po
│ │ │ ├── zh-CN/
│ │ │ │ └── LC_MESSAGES/
│ │ │ │ ├── events.mo
│ │ │ │ └── events.po
│ │ │ └── zh-TW/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── events.mo
│ │ │ └── events.po
│ │ └── offroad/
│ │ ├── fcc.html
│ │ └── tc.html
│ ├── athena/
│ │ ├── __init__.py
│ │ ├── athenad.py
│ │ ├── manage_athenad.py
│ │ └── registration.py
│ ├── camerad/
│ │ ├── SConscript
│ │ ├── cameras/
│ │ │ ├── camera_common.cc
│ │ │ ├── camera_common.h
│ │ │ ├── camera_frame_stream.cc
│ │ │ ├── camera_frame_stream.h
│ │ │ ├── camera_mipi.cc
│ │ │ ├── camera_mipi.h
│ │ │ ├── camera_qcom.cc
│ │ │ ├── camera_qcom.h
│ │ │ ├── camera_qcom2.cc
│ │ │ ├── camera_qcom2.h
│ │ │ ├── debayer.cl
│ │ │ ├── real_debayer.cl
│ │ │ ├── sensor2_i2c.h
│ │ │ └── sensor_i2c.h
│ │ ├── imgproc/
│ │ │ ├── conv.cl
│ │ │ ├── pool.cl
│ │ │ ├── utils.cc
│ │ │ └── utils.h
│ │ ├── include/
│ │ │ ├── media/
│ │ │ │ ├── cam_cpas.h
│ │ │ │ ├── cam_defs.h
│ │ │ │ ├── cam_fd.h
│ │ │ │ ├── cam_icp.h
│ │ │ │ ├── cam_isp.h
│ │ │ │ ├── cam_isp_ife.h
│ │ │ │ ├── cam_isp_vfe.h
│ │ │ │ ├── cam_jpeg.h
│ │ │ │ ├── cam_lrme.h
│ │ │ │ ├── cam_req_mgr.h
│ │ │ │ ├── cam_sensor.h
│ │ │ │ ├── cam_sensor_cmn_header.h
│ │ │ │ └── cam_sync.h
│ │ │ ├── msm_cam_sensor.h
│ │ │ ├── msm_camsensor_sdk.h
│ │ │ ├── msmb_camera.h
│ │ │ ├── msmb_isp.h
│ │ │ └── msmb_ispif.h
│ │ ├── main.cc
│ │ ├── snapshot/
│ │ │ ├── __init__.py
│ │ │ └── snapshot.py
│ │ └── transforms/
│ │ ├── rgb_to_yuv.cc
│ │ ├── rgb_to_yuv.cl
│ │ ├── rgb_to_yuv.h
│ │ └── rgb_to_yuv_test.cc
│ ├── car/
│ │ ├── __init__.py
│ │ ├── car_helpers.py
│ │ ├── chrysler/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── chryslercan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── fingerprints.py
│ │ ├── ford/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── fordcan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── fw_versions.py
│ │ ├── gm/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── gmcan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── honda/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── hondacan.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── hyundai/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── hyundaican.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── interfaces.py
│ │ ├── isotp_parallel_query.py
│ │ ├── mazda/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── mazdacan.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── mock/
│ │ │ ├── __init__.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── nissan/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── nissancan.py
│ │ │ ├── radar_interface.py
│ │ │ └── values.py
│ │ ├── subaru/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ ├── subarucan.py
│ │ │ └── values.py
│ │ ├── tesla/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ ├── teslacan.py
│ │ │ └── values.py
│ │ ├── tests/
│ │ │ ├── __init__.py
│ │ │ └── test_car_interfaces.py
│ │ ├── toyota/
│ │ │ ├── __init__.py
│ │ │ ├── carcontroller.py
│ │ │ ├── carstate.py
│ │ │ ├── interface.py
│ │ │ ├── radar_interface.py
│ │ │ ├── toyotacan.py
│ │ │ └── values.py
│ │ ├── vin.py
│ │ └── volkswagen/
│ │ ├── __init__.py
│ │ ├── carcontroller.py
│ │ ├── carstate.py
│ │ ├── interface.py
│ │ ├── radar_interface.py
│ │ ├── values.py
│ │ └── volkswagencan.py
│ ├── common/
│ │ ├── SConscript
│ │ ├── clutil.cc
│ │ ├── clutil.h
│ │ ├── framebuffer.cc
│ │ ├── framebuffer.h
│ │ ├── glutil.cc
│ │ ├── glutil.h
│ │ ├── gpio.cc
│ │ ├── gpio.h
│ │ ├── i2c.cc
│ │ ├── i2c.h
│ │ ├── mat.h
│ │ ├── modeldata.h
│ │ ├── params.cc
│ │ ├── params.h
│ │ ├── queue.h
│ │ ├── swaglog.cc
│ │ ├── swaglog.h
│ │ ├── timing.h
│ │ ├── touch.c
│ │ ├── touch.h
│ │ ├── util.cc
│ │ ├── util.h
│ │ ├── version.h
│ │ ├── visionimg.cc
│ │ ├── visionimg.h
│ │ ├── watchdog.cc
│ │ └── watchdog.h
│ ├── config.py
│ ├── controls/
│ │ ├── __init__.py
│ │ ├── controlsd.py
│ │ ├── lib/
│ │ │ ├── __init__.py
│ │ │ ├── alertmanager.py
│ │ │ ├── alerts_offroad.json
│ │ │ ├── cluster/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── fastcluster.cpp
│ │ │ │ ├── fastcluster.h
│ │ │ │ ├── fastcluster_R_dm.cpp
│ │ │ │ ├── fastcluster_dm.cpp
│ │ │ │ ├── fastcluster_py.py
│ │ │ │ └── test.cpp
│ │ │ ├── drive_helpers.py
│ │ │ ├── events.py
│ │ │ ├── fcw.py
│ │ │ ├── lane_planner.py
│ │ │ ├── latcontrol_angle.py
│ │ │ ├── latcontrol_indi.py
│ │ │ ├── latcontrol_lqr.py
│ │ │ ├── latcontrol_pid.py
│ │ │ ├── lateral_mpc/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── lateral_mpc.c
│ │ │ │ ├── lib_mpc_export/
│ │ │ │ │ ├── acado_auxiliary_functions.c
│ │ │ │ │ ├── acado_auxiliary_functions.h
│ │ │ │ │ ├── acado_common.h
│ │ │ │ │ ├── acado_integrator.c
│ │ │ │ │ ├── acado_qpoases_interface.cpp
│ │ │ │ │ ├── acado_qpoases_interface.hpp
│ │ │ │ │ └── acado_solver.c
│ │ │ │ └── libmpc_py.py
│ │ │ ├── lateral_planner.py
│ │ │ ├── lead_mpc.py
│ │ │ ├── lead_mpc_lib/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── lib_mpc_export/
│ │ │ │ │ ├── acado_auxiliary_functions.c
│ │ │ │ │ ├── acado_auxiliary_functions.h
│ │ │ │ │ ├── acado_common.h
│ │ │ │ │ ├── acado_integrator.c
│ │ │ │ │ ├── acado_qpoases_interface.cpp
│ │ │ │ │ ├── acado_qpoases_interface.hpp
│ │ │ │ │ └── acado_solver.c
│ │ │ │ ├── libmpc_py.py
│ │ │ │ └── longitudinal_mpc.c
│ │ │ ├── limits_long_mpc.py
│ │ │ ├── long_mpc.py
│ │ │ ├── longcontrol.py
│ │ │ ├── longitudinal_mpc_lib/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── SConscript
│ │ │ │ ├── __init__.py
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── lib_mpc_export/
│ │ │ │ │ ├── acado_auxiliary_functions.c
│ │ │ │ │ ├── acado_auxiliary_functions.h
│ │ │ │ │ ├── acado_common.h
│ │ │ │ │ ├── acado_integrator.c
│ │ │ │ │ ├── acado_qpoases_interface.cpp
│ │ │ │ │ ├── acado_qpoases_interface.hpp
│ │ │ │ │ └── acado_solver.c
│ │ │ │ ├── libmpc_py.py
│ │ │ │ └── longitudinal_mpc.c
│ │ │ ├── longitudinal_planner.py
│ │ │ ├── pid.py
│ │ │ ├── radar_helpers.py
│ │ │ ├── speed_limit_controller.py
│ │ │ ├── turn_speed_controller.py
│ │ │ ├── vehicle_model.py
│ │ │ └── vision_turn_controller.py
│ │ ├── plannerd.py
│ │ └── radard.py
│ ├── crash.py
│ ├── debug/
│ │ ├── __init__.py
│ │ ├── can_print_changes.py
│ │ ├── can_printer.py
│ │ ├── check_freq.py
│ │ ├── check_lag.py
│ │ ├── check_timings.py
│ │ ├── compare_fingerprints.py
│ │ ├── count_events.py
│ │ ├── cpu_usage_stat.py
│ │ ├── cycle_alerts.py
│ │ ├── disable_ecu.py
│ │ ├── dump.py
│ │ ├── filter_log_message.py
│ │ ├── fingerprint_from_route.py
│ │ ├── get_fingerprint.py
│ │ ├── live_cpu_and_temp.py
│ │ ├── run_process_on_route.py
│ │ ├── set_car_params.py
│ │ ├── show_matching_cars.py
│ │ ├── test_fw_query_on_routes.py
│ │ ├── toyota_eps_factor.py
│ │ └── uiview.py
│ ├── dragonpilot/
│ │ ├── HOWTO-APPD.md
│ │ ├── LICENSE.md
│ │ ├── appd.py
│ │ ├── appd_example.json
│ │ ├── dashcamd.py
│ │ ├── fonts.xml
│ │ ├── gpx_uploader.py
│ │ ├── gpxd.py
│ │ ├── otisserv.py
│ │ ├── systemd.py
│ │ └── tpl/
│ │ ├── addr_input.tpl
│ │ ├── app_token_input.tpl
│ │ ├── body.tpl
│ │ ├── gmap_index.html.tpl
│ │ ├── gmap_index.js.tpl
│ │ ├── gmap_key_input.tpl
│ │ ├── gmap_style.css.tpl
│ │ ├── nav_confirmation.tpl
│ │ └── public_token_input.tpl
│ ├── hardware/
│ │ ├── __init__.py
│ │ ├── base.h
│ │ ├── base.py
│ │ ├── eon/
│ │ │ ├── __init__.py
│ │ │ ├── androidd.py
│ │ │ ├── hardware.h
│ │ │ └── hardware.py
│ │ ├── hw.h
│ │ ├── jetson/
│ │ │ ├── __init__.py
│ │ │ ├── hardware.h
│ │ │ └── hardware.py
│ │ ├── pc/
│ │ │ ├── __init__.py
│ │ │ └── hardware.py
│ │ └── tici/
│ │ ├── __init__.py
│ │ ├── agnos.json
│ │ ├── agnos.py
│ │ ├── amplifier.py
│ │ ├── hardware.h
│ │ ├── hardware.py
│ │ ├── iwlist.py
│ │ ├── pins.py
│ │ └── updater
│ ├── logcatd/
│ │ ├── SConscript
│ │ ├── logcatd_android.cc
│ │ └── logcatd_systemd.cc
│ ├── loggerd/
│ │ ├── SConscript
│ │ ├── __init__.py
│ │ ├── bootlog.cc
│ │ ├── config.py
│ │ ├── deleter.py
│ │ ├── encoder.h
│ │ ├── include/
│ │ │ └── msm_media_info.h
│ │ ├── logger.cc
│ │ ├── logger.h
│ │ ├── loggerd.cc
│ │ ├── omx_encoder.cc
│ │ ├── omx_encoder.h
│ │ ├── raw_logger.cc
│ │ ├── raw_logger.h
│ │ ├── uploader.py
│ │ └── xattr_cache.py
│ ├── logmessaged.py
│ ├── manager/
│ │ ├── __init__.py
│ │ ├── build.py
│ │ ├── custom_dep.py
│ │ ├── helpers.py
│ │ ├── manager.py
│ │ ├── process.py
│ │ ├── process_config.py
│ │ └── test/
│ │ ├── __init__.py
│ │ └── test_manager.py
│ ├── manager.py
│ ├── mapd/
│ │ ├── README.md
│ │ ├── config.py
│ │ ├── lib/
│ │ │ ├── NodesData.py
│ │ │ ├── Route.py
│ │ │ ├── WayCollection.py
│ │ │ ├── WayRelation.py
│ │ │ ├── WayRelationIndex.py
│ │ │ ├── default_speeds.json
│ │ │ ├── geo.py
│ │ │ └── osm.py
│ │ ├── mapd.py
│ │ └── test/
│ │ ├── __init__.py
│ │ ├── mock_data.py
│ │ ├── mock_osm_response_01.xml
│ │ ├── mock_osm_response_02.xml
│ │ ├── test_NodesData.py
│ │ ├── test_WayRelation.py
│ │ └── test_geo.py
│ ├── modeld/
│ │ ├── SConscript
│ │ ├── constants.py
│ │ ├── dmonitoringmodeld
│ │ ├── dmonitoringmodeld.cc
│ │ ├── modeld
│ │ ├── modeld.cc
│ │ ├── models/
│ │ │ ├── commonmodel.cc
│ │ │ ├── commonmodel.h
│ │ │ ├── dmonitoring.cc
│ │ │ ├── dmonitoring.h
│ │ │ ├── driving.cc
│ │ │ └── driving.h
│ │ ├── runners/
│ │ │ ├── onnx_runner.py
│ │ │ ├── onnxmodel.cc
│ │ │ ├── onnxmodel.h
│ │ │ ├── run.h
│ │ │ ├── runmodel.h
│ │ │ ├── snpemodel.cc
│ │ │ ├── snpemodel.h
│ │ │ ├── thneedmodel.cc
│ │ │ └── thneedmodel.h
│ │ ├── thneed/
│ │ │ ├── compile.cc
│ │ │ ├── include/
│ │ │ │ └── msm_kgsl.h
│ │ │ ├── serialize.cc
│ │ │ ├── thneed.cc
│ │ │ └── thneed.h
│ │ └── transforms/
│ │ ├── loadyuv.cc
│ │ ├── loadyuv.cl
│ │ ├── loadyuv.h
│ │ ├── transform.cc
│ │ ├── transform.cl
│ │ └── transform.h
│ ├── monitoring/
│ │ ├── dmonitoringd.py
│ │ └── driver_monitor.py
│ ├── pandad.py
│ ├── proclogd/
│ │ ├── SConscript
│ │ ├── main.cc
│ │ ├── proclog.cc
│ │ └── proclog.h
│ ├── rtshield.py
│ ├── sensord/
│ │ ├── SConscript
│ │ ├── libdiag.h
│ │ ├── sensord
│ │ ├── sensors/
│ │ │ ├── bmx055_accel.cc
│ │ │ ├── bmx055_accel.h
│ │ │ ├── bmx055_gyro.cc
│ │ │ ├── bmx055_gyro.h
│ │ │ ├── bmx055_magn.cc
│ │ │ ├── bmx055_magn.h
│ │ │ ├── bmx055_temp.cc
│ │ │ ├── bmx055_temp.h
│ │ │ ├── constants.h
│ │ │ ├── file_sensor.cc
│ │ │ ├── file_sensor.h
│ │ │ ├── i2c_sensor.cc
│ │ │ ├── i2c_sensor.h
│ │ │ ├── light_sensor.cc
│ │ │ ├── light_sensor.h
│ │ │ ├── lsm6ds3_accel.cc
│ │ │ ├── lsm6ds3_accel.h
│ │ │ ├── lsm6ds3_gyro.cc
│ │ │ ├── lsm6ds3_gyro.h
│ │ │ ├── lsm6ds3_temp.cc
│ │ │ ├── lsm6ds3_temp.h
│ │ │ ├── mmc5603nj_magn.cc
│ │ │ ├── mmc5603nj_magn.h
│ │ │ └── sensor.h
│ │ ├── sensors_qcom.cc
│ │ └── sensors_qcom2.cc
│ ├── swaglog.py
│ ├── test/
│ │ ├── __init__.py
│ │ ├── helpers.py
│ │ ├── setup_device_ci.sh
│ │ ├── test_fingerprints.py
│ │ └── test_onroad.py
│ ├── thermald/
│ │ ├── power_monitoring.py
│ │ └── thermald.py
│ ├── timezoned.py
│ ├── tombstoned.py
│ ├── ui/
│ │ ├── .gitignore
│ │ ├── SConscript
│ │ ├── _ui
│ │ ├── _ui_dp
│ │ ├── main.cc
│ │ ├── paint.cc
│ │ ├── paint.h
│ │ ├── qt/
│ │ │ ├── api.cc
│ │ │ ├── api.h
│ │ │ ├── home.cc
│ │ │ ├── home.h
│ │ │ ├── maps/
│ │ │ │ ├── map.cc
│ │ │ │ ├── map.h
│ │ │ │ ├── map_helpers.cc
│ │ │ │ ├── map_helpers.h
│ │ │ │ ├── map_settings.cc
│ │ │ │ └── map_settings.h
│ │ │ ├── offroad/
│ │ │ │ ├── driverview.cc
│ │ │ │ ├── driverview.h
│ │ │ │ ├── networking.cc
│ │ │ │ ├── networking.h
│ │ │ │ ├── networkmanager.h
│ │ │ │ ├── onboarding.cc
│ │ │ │ ├── onboarding.h
│ │ │ │ ├── settings.cc
│ │ │ │ ├── settings.h
│ │ │ │ ├── text_view.qml
│ │ │ │ ├── wifiManager.cc
│ │ │ │ └── wifiManager.h
│ │ │ ├── onroad.cc
│ │ │ ├── onroad.h
│ │ │ ├── qt_window.h
│ │ │ ├── request_repeater.cc
│ │ │ ├── request_repeater.h
│ │ │ ├── sidebar.cc
│ │ │ ├── sidebar.h
│ │ │ ├── spinner
│ │ │ ├── spinner.cc
│ │ │ ├── spinner.h
│ │ │ ├── spinner_aarch64
│ │ │ ├── spinner_larch64
│ │ │ ├── text
│ │ │ ├── text.cc
│ │ │ ├── text_aarch64
│ │ │ ├── text_larch64
│ │ │ ├── util.cc
│ │ │ ├── util.h
│ │ │ ├── widgets/
│ │ │ │ ├── cameraview.cc
│ │ │ │ ├── cameraview.h
│ │ │ │ ├── controls.cc
│ │ │ │ ├── controls.h
│ │ │ │ ├── drive_stats.cc
│ │ │ │ ├── drive_stats.h
│ │ │ │ ├── input.cc
│ │ │ │ ├── input.h
│ │ │ │ ├── keyboard.cc
│ │ │ │ ├── keyboard.h
│ │ │ │ ├── offroad_alerts.cc
│ │ │ │ ├── offroad_alerts.h
│ │ │ │ ├── prime.cc
│ │ │ │ ├── prime.h
│ │ │ │ ├── scrollview.cc
│ │ │ │ ├── scrollview.h
│ │ │ │ ├── ssh_keys.cc
│ │ │ │ ├── ssh_keys.h
│ │ │ │ ├── toggle.cc
│ │ │ │ └── toggle.h
│ │ │ ├── window.cc
│ │ │ └── window.h
│ │ ├── soundd
│ │ ├── soundd.cc
│ │ ├── spinner
│ │ ├── text
│ │ ├── translations/
│ │ │ ├── en-US.qm
│ │ │ ├── en-US.ts
│ │ │ ├── zh-CN.qm
│ │ │ ├── zh-CN.ts
│ │ │ ├── zh-TW.qm
│ │ │ └── zh-TW.ts
│ │ ├── ui
│ │ ├── ui.cc
│ │ ├── ui.h
│ │ ├── ui.pro
│ │ └── update_translations.sh
│ ├── updated.py
│ └── version.py
├── site_scons/
│ └── site_tools/
│ └── cython.py
└── tools/
└── openpilot_env.sh
Showing preview only (645K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7481 symbols across 885 files)
FILE: cereal/messaging/__init__.py
function log_from_bytes (line 30) | def log_from_bytes(dat: bytes) -> capnp.lib.capnp._DynamicStructReader:
function new_message (line 33) | def new_message(service: Optional[str] = None, size: Optional[int] = Non...
function pub_sock (line 44) | def pub_sock(endpoint: str) -> PubSocket:
function sub_sock (line 49) | def sub_sock(endpoint: str, poller: Optional[Poller] = None, addr: str =...
function drain_sock_raw (line 62) | def drain_sock_raw(sock: SubSocket, wait_for_one: bool = False) -> List[...
function drain_sock (line 78) | def drain_sock(sock: SubSocket, wait_for_one: bool = False) -> List[capn...
function recv_sock (line 97) | def recv_sock(sock: SubSocket, wait: bool = False) -> Union[None, capnp....
function recv_one (line 117) | def recv_one(sock: SubSocket) -> Union[None, capnp.lib.capnp._DynamicStr...
function recv_one_or_none (line 123) | def recv_one_or_none(sock: SubSocket) -> Union[None, capnp.lib.capnp._Dy...
function recv_one_retry (line 129) | def recv_one_retry(sock: SubSocket) -> capnp.lib.capnp._DynamicStructRea...
class SubMaster (line 136) | class SubMaster():
method __init__ (line 137) | def __init__(self, services: List[str], poll: Optional[List[str]] = None,
method __getitem__ (line 174) | def __getitem__(self, s: str) -> capnp.lib.capnp._DynamicStructReader:
method update (line 177) | def update(self, timeout: int = 1000) -> None:
method update_msgs (line 187) | def update_msgs(self, cur_time: float, msgs: List[capnp.lib.capnp._Dyn...
method all_alive (line 224) | def all_alive(self, service_list=None) -> bool:
method all_valid (line 229) | def all_valid(self, service_list=None) -> bool:
method all_alive_and_valid (line 234) | def all_alive_and_valid(self, service_list=None) -> bool:
class PubMaster (line 239) | class PubMaster():
method __init__ (line 240) | def __init__(self, services: List[str]):
method send (line 245) | def send(self, s: str, dat: Union[bytes, capnp.lib.capnp._DynamicStruc...
method all_readers_updated (line 250) | def all_readers_updated(self, s: str) -> bool:
FILE: cereal/messaging/bridge.cc
function sigpipe_handler (line 14) | void sigpipe_handler(int sig) {
function get_services (line 19) | static std::vector<std::string> get_services(std::string whitelist_str, ...
function main (line 32) | int main(int argc, char** argv) {
FILE: cereal/messaging/impl_msgq.cc
function sig_handler (line 14) | void sig_handler(int signal) {
function service_exists (line 19) | static bool service_exists(std::string path){
function get_size (line 28) | static size_t get_size(std::string endpoint){
function Message (line 98) | Message * MSGQSubSocket::receive(bool non_blocking){
FILE: cereal/messaging/impl_msgq.h
function class (line 9) | class MSGQContext : public Context {
function class (line 18) | class MSGQMessage : public Message {
function class (line 32) | class MSGQSubSocket : public SubSocket {
function class (line 44) | class MSGQPubSocket : public PubSocket {
function class (line 55) | class MSGQPoller : public Poller {
FILE: cereal/messaging/impl_zmq.cc
function get_port (line 12) | static int get_port(std::string endpoint) {
function Message (line 84) | Message * ZMQSubSocket::receive(bool non_blocking){
FILE: cereal/messaging/impl_zmq.h
function class (line 8) | class ZMQContext : public Context {
function class (line 17) | class ZMQMessage : public Message {
function class (line 30) | class ZMQSubSocket : public SubSocket {
function class (line 42) | class ZMQPubSocket : public PubSocket {
function class (line 54) | class ZMQPoller : public Poller {
FILE: cereal/messaging/messaging.cc
function messaging_use_zmq (line 11) | bool messaging_use_zmq(){
function Context (line 15) | Context * Context::create(){
function SubSocket (line 25) | SubSocket * SubSocket::create(){
function SubSocket (line 35) | SubSocket * SubSocket::create(Context * context, std::string endpoint, s...
function PubSocket (line 47) | PubSocket * PubSocket::create(){
function PubSocket (line 57) | PubSocket * PubSocket::create(Context * context, std::string endpoint, b...
function Poller (line 69) | Poller * Poller::create(){
function Poller (line 79) | Poller * Poller::create(std::vector<SubSocket*> sockets){
function Context (line 88) | Context * messaging_context_create() {
function SubSocket (line 92) | SubSocket * messaging_subsocket_create(Context* context, const char* end...
function PubSocket (line 96) | PubSocket * messaging_pubsocket_create(Context* context, const char* end...
function Poller (line 100) | Poller * messaging_poller_create(SubSocket** sockets, int size) {
FILE: cereal/messaging/messaging.h
function class (line 17) | class Context {
function class (line 24) | class Message {
function class (line 35) | class SubSocket {
function class (line 46) | class PubSocket {
function class (line 58) | class Poller {
function class (line 67) | class SubMaster {
function class (line 95) | class MessageBuilder : public capnp::MallocMessageBuilder {
function class (line 118) | class PubMaster {
function class (line 129) | class AlignedBuffer {
FILE: cereal/messaging/msgq.cc
function sigusr2_handler (line 26) | void sigusr2_handler(int signal) {
function msgq_get_uid (line 30) | uint64_t msgq_get_uid(void){
function msgq_msg_init_size (line 44) | int msgq_msg_init_size(msgq_msg_t * msg, size_t size){
function msgq_msg_init_data (line 52) | int msgq_msg_init_data(msgq_msg_t * msg, char * data, size_t size) {
function msgq_msg_close (line 61) | int msgq_msg_close(msgq_msg_t * msg){
function msgq_reset_reader (line 70) | void msgq_reset_reader(msgq_queue_t * q){
function msgq_wait_for_subscriber (line 76) | void msgq_wait_for_subscriber(msgq_queue_t *q){
function msgq_new_queue (line 85) | int msgq_new_queue(msgq_queue_t * q, const char * path, size_t size){
function msgq_close_queue (line 138) | void msgq_close_queue(msgq_queue_t *q){
function msgq_init_publisher (line 145) | void msgq_init_publisher(msgq_queue_t * q) {
function thread_signal (line 160) | static void thread_signal(uint32_t tid) {
function msgq_init_subscriber (line 169) | void msgq_init_subscriber(msgq_queue_t * q) {
function msgq_msg_send (line 219) | int msgq_msg_send(msgq_msg_t * msg, msgq_queue_t *q){
function msgq_msg_ready (line 304) | int msgq_msg_ready(msgq_queue_t * q){
function msgq_msg_recv (line 331) | int msgq_msg_recv(msgq_msg_t * msg, msgq_queue_t * q){
function msgq_poll (line 419) | int msgq_poll(msgq_pollitem_t * items, size_t nitems, int timeout){
function msgq_all_readers_updated (line 456) | bool msgq_all_readers_updated(msgq_queue_t *q) {
FILE: cereal/messaging/msgq.h
type msgq_header_t (line 14) | struct msgq_header_t {
type msgq_queue_t (line 23) | struct msgq_queue_t {
type msgq_msg_t (line 41) | struct msgq_msg_t {
type msgq_pollitem_t (line 46) | struct msgq_pollitem_t {
FILE: cereal/messaging/socketmaster.cc
function nanos_since_boot (line 12) | static inline uint64_t nanos_since_boot() {
function service (line 18) | static const service *get_service(const char *name) {
function inList (line 25) | static inline bool inList(const std::vector<const char *> &list, const c...
class MessageContext (line 32) | class MessageContext {
method MessageContext (line 34) | MessageContext() : ctx_(nullptr) {}
method Context (line 36) | inline Context *context() {
type SubMaster::SubMessage (line 47) | struct SubMaster::SubMessage {
FILE: cereal/services.py
function new_port (line 10) | def new_port(port: int):
class Service (line 15) | class Service:
method __init__ (line 16) | def __init__(self, port: int, should_log: bool, frequency: float, deci...
function build_header (line 77) | def build_header():
FILE: cereal/visionipc/ipc.cc
function ipc_connect (line 20) | int ipc_connect(const char* socket_path) {
function ipc_bind (line 39) | int ipc_bind(const char* socket_path) {
function ipc_sendrecv_with_fds (line 60) | int ipc_sendrecv_with_fds(bool send, int fd, void *buf, size_t buf_size,...
FILE: cereal/visionipc/visionbuf.cc
function visionbuf_compute_aligned_width_and_height (line 17) | void visionbuf_compute_aligned_width_and_height(int width, int height, i...
FILE: cereal/visionipc/visionbuf.h
type VisionStreamType (line 14) | enum VisionStreamType {
function class (line 24) | class VisionBuf {
FILE: cereal/visionipc/visionbuf_ion.cc
function ion_init (line 33) | static void ion_init() {
type ion_allocation_data (line 44) | struct ion_allocation_data
type ion_fd_data (line 53) | struct ion_fd_data
type ion_fd_data (line 79) | struct ion_fd_data
type ion_flush_data (line 108) | struct ion_flush_data
type ion_custom_data (line 118) | struct ion_custom_data
type ion_handle_data (line 142) | struct ion_handle_data
FILE: cereal/visionipc/visionipc.h
type VisionIpcBufExtra (line 8) | struct VisionIpcBufExtra {
type VisionIpcPacket (line 14) | struct VisionIpcPacket {
FILE: cereal/visionipc/visionipc_client.cc
function VisionBuf (line 79) | VisionBuf * VisionIpcClient::recv(VisionIpcBufExtra * extra, const int t...
FILE: cereal/visionipc/visionipc_client.h
function class (line 10) | class VisionIpcClient {
FILE: cereal/visionipc/visionipc_server.cc
function get_endpoint_name (line 15) | std::string get_endpoint_name(std::string name, VisionStreamType type){
type pollfd (line 85) | struct pollfd
function VisionBuf (line 141) | VisionBuf * VisionIpcServer::get_buffer(VisionStreamType type){
FILE: cereal/visionipc/visionipc_server.h
function class (line 14) | class VisionIpcServer {
FILE: cereal/visionipc/visionipc_tests.cc
function zmq_sleep (line 8) | static void zmq_sleep(int milliseconds=1000){
FILE: common/api/__init__.py
class Api (line 11) | class Api():
method __init__ (line 12) | def __init__(self, dongle_id):
method get (line 19) | def get(self, *args, **kwargs):
method post (line 22) | def post(self, *args, **kwargs):
method request (line 25) | def request(self, method, endpoint, timeout=None, access_token=None, *...
method get_token (line 28) | def get_token(self):
function api_get (line 42) | def api_get(endpoint, method='GET', timeout=None, access_token=None, **p...
FILE: common/cython_hacks.py
function get_ext_filename_without_platform_suffix (line 5) | def get_ext_filename_without_platform_suffix(filename):
class BuildExtWithoutPlatformSuffix (line 20) | class BuildExtWithoutPlatformSuffix(build_ext):
method get_ext_filename (line 21) | def get_ext_filename(self, ext_name):
FILE: common/dict_helpers.py
function strip_deprecated_keys (line 2) | def strip_deprecated_keys(d):
FILE: common/dp_common.py
function is_online (line 11) | def is_online():
function common_controller_ctrl (line 17) | def common_controller_ctrl(enabled, dragonconf, blinker_on, steer_req, v...
function common_interface_atl (line 23) | def common_interface_atl(ret, atl):
function common_interface_get_params_lqr (line 34) | def common_interface_get_params_lqr(ret):
function get_last_modified (line 49) | def get_last_modified(delay, old_check, old_modified):
function param_get_if_updated (line 56) | def param_get_if_updated(param, type, old_val, old_modified):
function param_get (line 69) | def param_get(param_name, type, default):
FILE: common/dp_conf.py
function get_definition (line 124) | def get_definition(name):
function to_param_val (line 130) | def to_param_val(name, val):
function to_struct_val (line 146) | def to_struct_val(name, val):
function get_struct_name (line 165) | def get_struct_name(snake_str):
function gen_log_struct (line 174) | def gen_log_struct():
function get_support_car_list (line 189) | def get_support_car_list():
function init_params_vals (line 218) | def init_params_vals(params):
function gen_params_cc_keys (line 226) | def gen_params_cc_keys():
FILE: common/ffi_wrapper.py
function suffix (line 8) | def suffix():
function ffi_wrap (line 14) | def ffi_wrap(name, c_code, c_header, tmpdir="/tmp/ccache", cflags="", li...
function compile_code (line 40) | def compile_code(name, c_code, c_header, directory, cflags="", libraries...
function wrap_compiled (line 52) | def wrap_compiled(name, directory):
FILE: common/file_helpers.py
function mkdirs_exists_ok (line 7) | def mkdirs_exists_ok(path):
function rm_not_exists_ok (line 17) | def rm_not_exists_ok(path):
function rm_tree_or_link (line 25) | def rm_tree_or_link(path):
function get_tmpdir_on_same_filesystem (line 32) | def get_tmpdir_on_same_filesystem(path):
class NamedTemporaryDir (line 42) | class NamedTemporaryDir():
method __init__ (line 43) | def __init__(self, temp_dir=None):
method name (line 47) | def name(self):
method close (line 50) | def close(self):
method __enter__ (line 53) | def __enter__(self):
method __exit__ (line 56) | def __exit__(self, exc_type, exc_value, traceback):
class CallbackReader (line 60) | class CallbackReader:
method __init__ (line 63) | def __init__(self, f, callback, *args):
method __getattr__ (line 69) | def __getattr__(self, attr):
method read (line 72) | def read(self, *args, **kwargs):
function _get_fileobject_func (line 79) | def _get_fileobject_func(writer, temp_dir):
function atomic_write_on_fs_tmp (line 85) | def atomic_write_on_fs_tmp(path, **kwargs):
function atomic_write_in_dir (line 95) | def atomic_write_in_dir(path, **kwargs):
FILE: common/filter_simple.py
class FirstOrderFilter (line 1) | class FirstOrderFilter:
method __init__ (line 3) | def __init__(self, x0, rc, dt, initialized=True):
method update_alpha (line 9) | def update_alpha(self, rc):
method update (line 12) | def update(self, x):
FILE: common/gpio.py
function gpio_init (line 1) | def gpio_init(pin, output):
function gpio_set (line 9) | def gpio_set(pin, high):
FILE: common/i18n.py
function events (line 8) | def events():
FILE: common/kalman/simple_kalman_old.py
class KF1D (line 4) | class KF1D:
method __init__ (line 8) | def __init__(self, x0, A, C, K):
method update (line 21) | def update(self, meas):
FILE: common/kalman/tests/test_simple_kalman.py
class TestSimpleKalman (line 10) | class TestSimpleKalman(unittest.TestCase):
method setUp (line 11) | def setUp(self):
method test_getter_setter (line 34) | def test_getter_setter(self):
method update_returns_state (line 38) | def update_returns_state(self):
method test_old_equal_new (line 42) | def test_old_equal_new(self):
method test_new_is_faster (line 53) | def test_new_is_faster(self):
FILE: common/logging_extra.py
function json_handler (line 14) | def json_handler(obj):
function json_robust_dumps (line 19) | def json_robust_dumps(obj):
class NiceOrderedDict (line 22) | class NiceOrderedDict(OrderedDict):
method __str__ (line 23) | def __str__(self):
class SwagFormatter (line 26) | class SwagFormatter(logging.Formatter):
method __init__ (line 27) | def __init__(self, swaglogger):
method format_dict (line 33) | def format_dict(self, record):
method format (line 65) | def format(self, record):
class SwagLogFileFormatter (line 70) | class SwagLogFileFormatter(SwagFormatter):
method fix_kv (line 71) | def fix_kv(self, k, v):
method format (line 95) | def format(self, record):
class SwagErrorFilter (line 108) | class SwagErrorFilter(logging.Filter):
method filter (line 109) | def filter(self, record):
function _tmpfunc (line 112) | def _tmpfunc():
function _srcfile (line 115) | def _srcfile():
class SwagLogger (line 118) | class SwagLogger(logging.Logger):
method __init__ (line 119) | def __init__(self):
method local_ctx (line 127) | def local_ctx(self):
method get_ctx (line 134) | def get_ctx(self):
method ctx (line 138) | def ctx(self, **kwargs):
method bind (line 147) | def bind(self, **kwargs):
method bind_global (line 150) | def bind_global(self, **kwargs):
method event (line 153) | def event(self, event_name, *args, **kwargs):
method findCaller (line 166) | def findCaller(self, stack_info=False, stacklevel=1):
FILE: common/numpy_fast.py
function int_rnd (line 1) | def int_rnd(x):
function clip (line 4) | def clip(x, lo, hi):
function interp (line 7) | def interp(x, xp, fp):
function mean (line 21) | def mean(x):
FILE: common/profiler.py
class Profiler (line 3) | class Profiler():
method __init__ (line 4) | def __init__(self, enabled=False):
method reset (line 13) | def reset(self, enabled=False):
method checkpoint (line 21) | def checkpoint(self, name, ignore=False):
method display (line 35) | def display(self):
FILE: common/realtime.py
class Priority (line 24) | class Priority:
function set_realtime_priority (line 35) | def set_realtime_priority(level: int) -> None:
function set_core_affinity (line 40) | def set_core_affinity(core: int) -> None:
function config_realtime_process (line 45) | def config_realtime_process(core: int, priority: int) -> None:
class Ratekeeper (line 51) | class Ratekeeper:
method __init__ (line 52) | def __init__(self, rate: int, print_delay_threshold: Optional[float] =...
method frame (line 62) | def frame(self) -> int:
method remaining (line 66) | def remaining(self) -> float:
method keep_time (line 70) | def keep_time(self) -> bool:
method monitor_time (line 77) | def monitor_time(self) -> bool:
FILE: common/spinner.py
class Spinner (line 6) | class Spinner():
method __init__ (line 7) | def __init__(self):
method __enter__ (line 16) | def __enter__(self):
method update (line 19) | def update(self, spinner_text: str):
method update_progress (line 27) | def update_progress(self, cur: int, total: int):
method close (line 30) | def close(self):
method __del__ (line 39) | def __del__(self):
method __exit__ (line 42) | def __exit__(self, exc_type, exc_value, traceback):
FILE: common/stat_live.py
class RunningStat (line 3) | class RunningStat():
method __init__ (line 5) | def __init__(self, priors=None, max_trackable=-1):
method reset (line 18) | def reset(self):
method push_data (line 25) | def push_data(self, new_data):
method mean (line 39) | def mean(self):
method variance (line 42) | def variance(self):
method std (line 48) | def std(self):
method params_to_save (line 51) | def params_to_save(self):
class RunningStatFilter (line 54) | class RunningStatFilter():
method __init__ (line 55) | def __init__(self, raw_priors=None, filtered_priors=None, max_trackabl...
method reset (line 59) | def reset(self):
method push_and_update (line 63) | def push_and_update(self, new_data):
FILE: common/text_window.py
class TextWindow (line 8) | class TextWindow:
method __init__ (line 9) | def __init__(self, text):
method get_status (line 18) | def get_status(self):
method __enter__ (line 24) | def __enter__(self):
method close (line 27) | def close(self):
method wait_for_exit (line 32) | def wait_for_exit(self):
method __del__ (line 40) | def __del__(self):
method __exit__ (line 43) | def __exit__(self, exc_type, exc_value, traceback):
FILE: common/timeout.py
class TimeoutException (line 3) | class TimeoutException(Exception):
class Timeout (line 6) | class Timeout:
method __init__ (line 13) | def __init__(self, seconds, error_msg=None):
method handle_timeout (line 19) | def handle_timeout(self, signume, frame):
method __enter__ (line 22) | def __enter__(self):
method __exit__ (line 26) | def __exit__(self, exc_type, exc_val, exc_tb):
FILE: common/transformations/camera.py
function get_calib_from_vp (line 77) | def get_calib_from_vp(vp):
function get_view_frame_from_road_frame (line 87) | def get_view_frame_from_road_frame(roll, pitch, yaw, height):
function get_view_frame_from_calib_frame (line 94) | def get_view_frame_from_calib_frame(roll, pitch, yaw, height):
function vp_from_ke (line 100) | def vp_from_ke(m):
function vp_from_rpy (line 110) | def vp_from_rpy(rpy, intrinsics=fcam_intrinsics):
function roll_from_ke (line 116) | def roll_from_ke(m):
function normalize (line 122) | def normalize(img_pts, intrinsics=fcam_intrinsics):
function denormalize (line 135) | def denormalize(img_pts, intrinsics=fcam_intrinsics, width=W, height=H):
function device_from_ecef (line 150) | def device_from_ecef(pos_ecef, orientation_ecef, pt_ecef):
function img_from_device (line 163) | def img_from_device(pt_device):
function get_camera_frame_from_calib_frame (line 178) | def get_camera_frame_from_calib_frame(camera_frame_from_road_frame, intr...
FILE: common/transformations/coordinates.cc
function Geodetic (line 17) | static Geodetic to_degrees(Geodetic geodetic){
function Geodetic (line 23) | static Geodetic to_radians(Geodetic geodetic){
function ECEF (line 30) | ECEF geodetic2ecef(Geodetic g){
function Geodetic (line 39) | Geodetic ecef2geodetic(ECEF e){
function NED (line 78) | NED LocalCoord::ecef2ned(ECEF e) {
function ECEF (line 86) | ECEF LocalCoord::ned2ecef(NED n) {
function NED (line 94) | NED LocalCoord::geodetic2ned(Geodetic g) {
function Geodetic (line 99) | Geodetic LocalCoord::ned2geodetic(NED n){
FILE: common/transformations/coordinates.hpp
type ECEF (line 6) | struct ECEF {
method to_vector (line 8) | Eigen::Vector3d to_vector(){
type NED (line 13) | struct NED {
method to_vector (line 15) | Eigen::Vector3d to_vector(){
type Geodetic (line 20) | struct Geodetic {
class LocalCoord (line 28) | class LocalCoord {
method LocalCoord (line 34) | LocalCoord(Geodetic g) : LocalCoord(g, ::geodetic2ecef(g)) {}
method LocalCoord (line 35) | LocalCoord(ECEF e) : LocalCoord(::ecef2geodetic(e), e) {}
FILE: common/transformations/coordinates.py
class LocalCoord (line 8) | class LocalCoord(LocalCoord_single):
FILE: common/transformations/model.py
function get_segnet_frame_from_camera_frame (line 12) | def get_segnet_frame_from_camera_frame(segnet_size=SEGNET_SIZE, full_fra...
function get_model_height_transform (line 95) | def get_model_height_transform(camera_frame_from_road_frame, height):
function get_camera_frame_from_model_frame (line 118) | def get_camera_frame_from_model_frame(camera_frame_from_road_frame, heig...
function get_camera_frame_from_medmodel_frame (line 138) | def get_camera_frame_from_medmodel_frame(camera_frame_from_road_frame):
function get_camera_frame_from_bigmodel_frame (line 148) | def get_camera_frame_from_bigmodel_frame(camera_frame_from_road_frame):
function get_model_frame (line 158) | def get_model_frame(snu_full, camera_frame_from_model_frame, size):
FILE: common/transformations/orientation.cc
function ensure_unique (line 10) | Eigen::Quaterniond ensure_unique(Eigen::Quaterniond quat){
function euler2quat (line 18) | Eigen::Quaterniond euler2quat(Eigen::Vector3d euler){
function quat2euler (line 28) | Eigen::Vector3d quat2euler(Eigen::Quaterniond quat){
function quat2rot (line 39) | Eigen::Matrix3d quat2rot(Eigen::Quaterniond quat){
function rot2quat (line 43) | Eigen::Quaterniond rot2quat(const Eigen::Matrix3d &rot){
function euler2rot (line 47) | Eigen::Matrix3d euler2rot(Eigen::Vector3d euler){
function rot2euler (line 51) | Eigen::Vector3d rot2euler(const Eigen::Matrix3d &rot){
function rot_matrix (line 55) | Eigen::Matrix3d rot_matrix(double roll, double pitch, double yaw){
function rot (line 59) | Eigen::Matrix3d rot(Eigen::Vector3d axis, double angle){
function ecef_euler_from_ned (line 66) | Eigen::Vector3d ecef_euler_from_ned(ECEF ecef_init, Eigen::Vector3d ned_...
function ned_euler_from_ecef (line 106) | Eigen::Vector3d ned_euler_from_ecef(ECEF ecef_init, Eigen::Vector3d ecef...
FILE: common/transformations/orientation.py
function numpy_wrap (line 14) | def numpy_wrap(function, input_shape, output_shape):
FILE: common/xattr.py
function setxattr (line 14) | def setxattr(path, name, value, flags=0):
function getxattr (line 20) | def getxattr(path, name, size=128):
function listxattr (line 32) | def listxattr(path, size=128):
function removexattr (line 41) | def removexattr(path, name):
FILE: installer/custom/termux-elf-cleaner/elf.h
type Elf32_Half (line 7) | typedef uint16_t Elf32_Half;
type Elf64_Half (line 8) | typedef uint16_t Elf64_Half;
type Elf32_Word (line 11) | typedef uint32_t Elf32_Word;
type Elf32_Sword (line 12) | typedef int32_t Elf32_Sword;
type Elf64_Word (line 13) | typedef uint32_t Elf64_Word;
type Elf64_Sword (line 14) | typedef int32_t Elf64_Sword;
type Elf32_Xword (line 17) | typedef uint64_t Elf32_Xword;
type Elf32_Sxword (line 18) | typedef int64_t Elf32_Sxword;
type Elf64_Xword (line 19) | typedef uint64_t Elf64_Xword;
type Elf64_Sxword (line 20) | typedef int64_t Elf64_Sxword;
type Elf32_Addr (line 23) | typedef uint32_t Elf32_Addr;
type Elf64_Addr (line 24) | typedef uint64_t Elf64_Addr;
type Elf32_Off (line 27) | typedef uint32_t Elf32_Off;
type Elf64_Off (line 28) | typedef uint64_t Elf64_Off;
type Elf32_Section (line 31) | typedef uint16_t Elf32_Section;
type Elf64_Section (line 32) | typedef uint16_t Elf64_Section;
type Elf32_Half (line 35) | typedef Elf32_Half Elf32_Versym;
type Elf64_Half (line 36) | typedef Elf64_Half Elf64_Versym;
type Elf32_Ehdr (line 40) | typedef struct {
type Elf64_Ehdr (line 56) | typedef struct {
type Elf32_Shdr (line 74) | typedef struct {
type Elf64_Shdr (line 86) | typedef struct {
type Elf32_Dyn (line 138) | typedef struct {
type Elf64_Dyn (line 142) | typedef struct {
type Elf32_Sym (line 192) | typedef struct {
type Elf64_Sym (line 201) | typedef struct {
FILE: installer/custom/termux-elf-cleaner/termux-elf-cleaner.cpp
function process_elf (line 38) | bool process_elf(uint8_t* bytes, size_t elf_file_size, char const* file_...
function main (line 129) | int main(int argc, char const** argv)
FILE: opendbc/can/common.cc
function honda_checksum (line 3) | unsigned int honda_checksum(unsigned int address, uint64_t d, int l) {
function toyota_checksum (line 18) | unsigned int toyota_checksum(unsigned int address, uint64_t d, int l) {
function subaru_checksum (line 29) | unsigned int subaru_checksum(unsigned int address, uint64_t d, int l) {
function chrysler_checksum (line 40) | unsigned int chrysler_checksum(unsigned int address, uint64_t d, int l) {
function gen_crc_lookup_table (line 75) | void gen_crc_lookup_table(uint8_t poly, uint8_t crc_lut[]) {
function init_crc_lookup_tables (line 91) | void init_crc_lookup_tables() {
function volkswagen_crc (line 97) | unsigned int volkswagen_crc(unsigned int address, uint64_t d, int l) {
function pedal_checksum (line 176) | unsigned int pedal_checksum(uint64_t d, int l) {
function read_u64_be (line 199) | uint64_t read_u64_be(const uint8_t* v) {
function read_u64_le (line 210) | uint64_t read_u64_le(const uint8_t* v) {
FILE: opendbc/can/common.h
function class (line 28) | class MessageState {
function class (line 50) | class CANParser {
function class (line 75) | class CANPacker {
FILE: opendbc/can/common_dbc.h
type SignalPackValue (line 10) | struct SignalPackValue {
type SignalParseOptions (line 15) | struct SignalParseOptions {
type MessageParseOptions (line 21) | struct MessageParseOptions {
type SignalValue (line 26) | struct SignalValue {
type SignalType (line 33) | enum SignalType {
type Signal (line 46) | struct Signal {
type Msg (line 55) | struct Msg {
type Val (line 63) | struct Val {
type DBC (line 70) | struct DBC {
FILE: opendbc/can/dbc.cc
function DBC (line 10) | const DBC* dbc_lookup(const std::string& dbc_name) {
function dbc_register (line 19) | void dbc_register(const DBC* dbc) {
function DBC (line 24) | const DBC* dbc_lookup(const char* dbc_name) {
FILE: opendbc/can/dbc.py
function int_or_float (line 8) | def int_or_float(s):
class dbc (line 21) | class dbc():
method __init__ (line 22) | def __init__(self, fn):
method lookup_msg_id (line 119) | def lookup_msg_id(self, msg_id):
method reverse_bytes (line 124) | def reverse_bytes(self, x):
method encode (line 134) | def encode(self, msg_id, dd):
method decode (line 176) | def decode(self, x, arr=None, debug=False):
method get_signals (line 254) | def get_signals(self, msg):
FILE: opendbc/can/packer.cc
function ReverseBytes (line 12) | uint64_t ReverseBytes(uint64_t x) {
function set_value (line 23) | static uint64_t set_value(uint64_t ret, const Signal& sig, int64_t ival) {
function Msg (line 115) | Msg* CANPacker::lookup_message(uint32_t address) {
FILE: opendbc/can/process_dbc.py
function process (line 11) | def process(in_fn, out_fn):
function main (line 116) | def main():
FILE: panda/board/boards/black.h
function black_enable_can_transceiver (line 5) | void black_enable_can_transceiver(uint8_t transceiver, bool enabled) {
function black_enable_can_transceivers (line 25) | void black_enable_can_transceivers(bool enabled) {
function black_set_led (line 36) | void black_set_led(uint8_t color, bool enabled) {
function black_set_gps_load_switch (line 52) | void black_set_gps_load_switch(bool enabled) {
function black_set_usb_load_switch (line 56) | void black_set_usb_load_switch(bool enabled) {
function black_set_usb_power_mode (line 60) | void black_set_usb_power_mode(uint8_t mode) {
function black_set_gps_mode (line 80) | void black_set_gps_mode(uint8_t mode) {
function black_set_can_mode (line 102) | void black_set_can_mode(uint8_t mode){
function black_check_ignition (line 130) | bool black_check_ignition(void){
function black_init (line 135) | void black_init(void) {
FILE: panda/board/boards/board_declarations.h
type board (line 18) | struct board {
FILE: panda/board/boards/dos.h
function dos_enable_can_transceiver (line 5) | void dos_enable_can_transceiver(uint8_t transceiver, bool enabled) {
function dos_enable_can_transceivers (line 25) | void dos_enable_can_transceivers(bool enabled) {
function dos_set_led (line 36) | void dos_set_led(uint8_t color, bool enabled) {
function dos_set_bootkick (line 52) | void dos_set_bootkick(bool enabled){
function dos_set_usb_power_mode (line 56) | void dos_set_usb_power_mode(uint8_t mode) {
function dos_set_can_mode (line 76) | void dos_set_can_mode(uint8_t mode){
function dos_check_ignition (line 104) | bool dos_check_ignition(void){
function dos_set_usb_switch (line 109) | void dos_set_usb_switch(bool phone){
function dos_set_ir_power (line 113) | void dos_set_ir_power(uint8_t percentage){
function dos_set_fan_power (line 117) | void dos_set_fan_power(uint8_t percentage){
function dos_set_clock_source_mode (line 123) | void dos_set_clock_source_mode(uint8_t mode){
function dos_set_siren (line 127) | void dos_set_siren(bool enabled){
function dos_init (line 131) | void dos_init(void) {
FILE: panda/board/boards/grey.h
function grey_init (line 7) | void grey_init(void) {
function grey_set_gps_mode (line 14) | void grey_set_gps_mode(uint8_t mode) {
FILE: panda/board/boards/pedal.h
function pedal_enable_can_transceiver (line 5) | void pedal_enable_can_transceiver(uint8_t transceiver, bool enabled) {
function pedal_enable_can_transceivers (line 16) | void pedal_enable_can_transceivers(bool enabled) {
function pedal_set_led (line 20) | void pedal_set_led(uint8_t color, bool enabled) {
function pedal_set_usb_power_mode (line 33) | void pedal_set_usb_power_mode(uint8_t mode){
function pedal_set_gps_mode (line 38) | void pedal_set_gps_mode(uint8_t mode) {
function pedal_set_can_mode (line 43) | void pedal_set_can_mode(uint8_t mode){
function pedal_check_ignition (line 53) | bool pedal_check_ignition(void){
function pedal_init (line 58) | void pedal_init(void) {
FILE: panda/board/boards/red.h
function red_enable_can_transceiver (line 5) | void red_enable_can_transceiver(uint8_t transceiver, bool enabled) {
function red_enable_can_transceivers (line 24) | void red_enable_can_transceivers(bool enabled) {
function red_set_led (line 36) | void red_set_led(uint8_t color, bool enabled) {
function red_set_usb_load_switch (line 52) | void red_set_usb_load_switch(bool enabled) {
function red_set_usb_power_mode (line 56) | void red_set_usb_power_mode(uint8_t mode) {
function red_set_can_mode (line 75) | void red_set_can_mode(uint8_t mode) {
function red_check_ignition (line 113) | bool red_check_ignition(void) {
function red_init (line 118) | void red_init(void) {
FILE: panda/board/boards/uno.h
function uno_enable_can_transceiver (line 7) | void uno_enable_can_transceiver(uint8_t transceiver, bool enabled) {
function uno_enable_can_transceivers (line 27) | void uno_enable_can_transceivers(bool enabled) {
function uno_set_led (line 38) | void uno_set_led(uint8_t color, bool enabled) {
function uno_set_gps_load_switch (line 54) | void uno_set_gps_load_switch(bool enabled) {
function uno_set_bootkick (line 58) | void uno_set_bootkick(bool enabled){
function uno_bootkick (line 62) | void uno_bootkick(void) {
function uno_set_phone_power (line 67) | void uno_set_phone_power(bool enabled){
function uno_set_usb_power_mode (line 71) | void uno_set_usb_power_mode(uint8_t mode) {
function uno_set_gps_mode (line 92) | void uno_set_gps_mode(uint8_t mode) {
function uno_set_can_mode (line 117) | void uno_set_can_mode(uint8_t mode){
function uno_usb_power_mode_tick (line 145) | void uno_usb_power_mode_tick(uint32_t uptime){
function uno_check_ignition (line 154) | bool uno_check_ignition(void){
function uno_set_usb_switch (line 159) | void uno_set_usb_switch(bool phone){
function uno_set_ir_power (line 163) | void uno_set_ir_power(uint8_t percentage){
function uno_set_fan_power (line 167) | void uno_set_fan_power(uint8_t percentage){
function uno_init (line 173) | void uno_init(void) {
FILE: panda/board/boards/unused_funcs.h
function unused_set_gps_mode (line 1) | void unused_set_gps_mode(uint8_t mode) {
function unused_usb_power_mode_tick (line 5) | void unused_usb_power_mode_tick(uint32_t uptime) {
function unused_set_ir_power (line 9) | void unused_set_ir_power(uint8_t percentage) {
function unused_set_fan_power (line 13) | void unused_set_fan_power(uint8_t percentage) {
function unused_set_phone_power (line 17) | void unused_set_phone_power(bool enabled) {
function unused_set_clock_source_mode (line 21) | void unused_set_clock_source_mode(uint8_t mode) {
function unused_set_siren (line 25) | void unused_set_siren(bool enabled) {
function unused_read_current (line 29) | uint32_t unused_read_current(void) {
FILE: panda/board/boards/white.h
function white_enable_can_transceiver (line 5) | void white_enable_can_transceiver(uint8_t transceiver, bool enabled) {
function white_enable_can_transceivers (line 22) | void white_enable_can_transceivers(bool enabled) {
function white_set_led (line 29) | void white_set_led(uint8_t color, bool enabled) {
function white_set_usb_power_mode (line 45) | void white_set_usb_power_mode(uint8_t mode){
function white_set_gps_mode (line 74) | void white_set_gps_mode(uint8_t mode) {
function white_set_can_mode (line 91) | void white_set_can_mode(uint8_t mode){
function white_read_current (line 150) | uint32_t white_read_current(void){
function white_check_ignition (line 154) | bool white_check_ignition(void){
function white_grey_common_init (line 159) | void white_grey_common_init(void) {
function white_init (line 230) | void white_init(void) {
FILE: panda/board/bootstub.c
function __initialize_hardware_early (line 22) | void __initialize_hardware_early(void) {
function fail (line 26) | void fail(void) {
function main (line 36) | int main(void) {
FILE: panda/board/bootstub_declarations.h
function puts (line 2) | void puts(const char *a){ UNUSED(a); }
function puth (line 3) | void puth(uint8_t i){ UNUSED(i); }
function puth2 (line 4) | void puth2(uint8_t i){ UNUSED(i); }
type board (line 5) | typedef struct board board;
type harness_configuration (line 6) | typedef struct harness_configuration harness_configuration;
function can_flip_buses (line 8) | void can_flip_buses(uint8_t bus1, uint8_t bus2){UNUSED(bus1); UNUSED(bus...
FILE: panda/board/crc.h
function crc_checksum (line 1) | uint8_t crc_checksum(uint8_t *dat, int len, const uint8_t poly) {
FILE: panda/board/critical.h
function enable_interrupts (line 4) | void enable_interrupts(void) {
function disable_interrupts (line 9) | void disable_interrupts(void) {
FILE: panda/board/drivers/bxcan.h
function can_set_speed (line 7) | bool can_set_speed(uint8_t can_number) {
function can_set_gmlan (line 17) | void can_set_gmlan(uint8_t bus) {
function can_sce (line 67) | void can_sce(CAN_TypeDef *CAN) {
function process_can (line 95) | void process_can(uint8_t can_number) {
function can_rx (line 156) | void can_rx(uint8_t can_number) {
function CAN1_TX_IRQ_Handler (line 197) | void CAN1_TX_IRQ_Handler(void) { process_can(0); }
function CAN1_RX0_IRQ_Handler (line 198) | void CAN1_RX0_IRQ_Handler(void) { can_rx(0); }
function CAN1_SCE_IRQ_Handler (line 199) | void CAN1_SCE_IRQ_Handler(void) { can_sce(CAN1); }
function CAN2_TX_IRQ_Handler (line 201) | void CAN2_TX_IRQ_Handler(void) { process_can(1); }
function CAN2_RX0_IRQ_Handler (line 202) | void CAN2_RX0_IRQ_Handler(void) { can_rx(1); }
function CAN2_SCE_IRQ_Handler (line 203) | void CAN2_SCE_IRQ_Handler(void) { can_sce(CAN2); }
function CAN3_TX_IRQ_Handler (line 205) | void CAN3_TX_IRQ_Handler(void) { process_can(2); }
function CAN3_RX0_IRQ_Handler (line 206) | void CAN3_RX0_IRQ_Handler(void) { can_rx(2); }
function CAN3_SCE_IRQ_Handler (line 207) | void CAN3_SCE_IRQ_Handler(void) { can_sce(CAN3); }
function can_init (line 209) | bool can_init(uint8_t can_number) {
FILE: panda/board/drivers/can_common.h
type can_ring (line 1) | typedef struct {
function can_pop (line 66) | bool can_pop(can_ring *q, CAN_FIFOMailBox_TypeDef *elem) {
function can_push (line 84) | bool can_push(can_ring *q, CAN_FIFOMailBox_TypeDef *elem) {
function can_slots_empty (line 109) | uint32_t can_slots_empty(can_ring *q) {
function can_clear (line 123) | void can_clear(can_ring *q) {
function can_init_all (line 152) | void can_init_all(void) {
function can_flip_buses (line 161) | void can_flip_buses(uint8_t bus1, uint8_t bus2){
function ignition_can_hook (line 168) | void ignition_can_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function can_tx_check_min_slots_free (line 196) | bool can_tx_check_min_slots_free(uint32_t min) {
function can_send (line 204) | void can_send(CAN_FIFOMailBox_TypeDef *to_push, uint8_t bus_number, bool...
function can_set_forwarding (line 220) | void can_set_forwarding(int from, int to) {
FILE: panda/board/drivers/fan.h
function fan_set_power (line 4) | void fan_set_power(uint8_t percentage){
function fan_tick (line 10) | void fan_tick(void){
FILE: panda/board/drivers/fdcan.h
function can_set_speed (line 10) | bool can_set_speed(uint8_t can_number) {
function can_set_gmlan (line 19) | void can_set_gmlan(uint8_t bus) {
function cycle_transceiver (line 24) | void cycle_transceiver(uint8_t can_number) {
function process_can (line 39) | void process_can(uint8_t can_number) {
function can_rx (line 110) | void can_rx(uint8_t can_number) {
function FDCAN1_IT0_IRQ_Handler (line 176) | void FDCAN1_IT0_IRQ_Handler(void) { can_rx(0); }
function FDCAN1_IT1_IRQ_Handler (line 177) | void FDCAN1_IT1_IRQ_Handler(void) { process_can(0); }
function FDCAN2_IT0_IRQ_Handler (line 179) | void FDCAN2_IT0_IRQ_Handler(void) { can_rx(1); }
function FDCAN2_IT1_IRQ_Handler (line 180) | void FDCAN2_IT1_IRQ_Handler(void) { process_can(1); }
function FDCAN3_IT0_IRQ_Handler (line 182) | void FDCAN3_IT0_IRQ_Handler(void) { can_rx(2); }
function FDCAN3_IT1_IRQ_Handler (line 183) | void FDCAN3_IT1_IRQ_Handler(void) { process_can(2); }
function can_init (line 185) | bool can_init(uint8_t can_number) {
FILE: panda/board/drivers/gmlan_alt.h
function do_bitstuff (line 15) | int do_bitstuff(char *out, char *in, int in_len) {
function append_crc (line 43) | int append_crc(char *in, int in_len) {
function append_bits (line 60) | int append_bits(char *in, int in_len, char *app, int app_len) {
function append_int (line 69) | int append_int(char *in, int in_len, int val, int val_len) {
function get_bit_message (line 78) | int get_bit_message(char *out, CAN_FIFOMailBox_TypeDef *to_bang) {
function setup_timer (line 127) | void setup_timer(void) {
function gmlan_switch_init (line 151) | void gmlan_switch_init(int timeout_enable) {
function set_gmlan_digital_output (line 162) | void set_gmlan_digital_output(int to_set) {
function reset_gmlan_switch_timeout (line 171) | void reset_gmlan_switch_timeout(void) {
function set_bitbanged_gmlan (line 177) | void set_bitbanged_gmlan(int val) {
function TIM12_IRQ_Handler (line 195) | void TIM12_IRQ_Handler(void) {
function bitbang_gmlan (line 272) | bool bitbang_gmlan(CAN_FIFOMailBox_TypeDef *to_bang) {
FILE: panda/board/drivers/gpio.h
function set_gpio_mode (line 13) | void set_gpio_mode(GPIO_TypeDef *GPIO, unsigned int pin, unsigned int mo...
function set_gpio_output (line 22) | void set_gpio_output(GPIO_TypeDef *GPIO, unsigned int pin, bool enabled) {
function set_gpio_output_type (line 33) | void set_gpio_output_type(GPIO_TypeDef *GPIO, unsigned int pin, unsigned...
function set_gpio_alternate (line 43) | void set_gpio_alternate(GPIO_TypeDef *GPIO, unsigned int pin, unsigned i...
function set_gpio_pullup (line 53) | void set_gpio_pullup(GPIO_TypeDef *GPIO, unsigned int pin, unsigned int ...
function get_gpio_input (line 62) | int get_gpio_input(GPIO_TypeDef *GPIO, unsigned int pin) {
function detect_with_pull (line 68) | bool detect_with_pull(GPIO_TypeDef *GPIO, int pin, int mode) {
FILE: panda/board/drivers/harness.h
type harness_configuration (line 6) | struct harness_configuration {
function set_intercept_relay (line 21) | void set_intercept_relay(bool intercept) {
function harness_check_ignition (line 37) | bool harness_check_ignition(void) {
function harness_detect_orientation (line 52) | uint8_t harness_detect_orientation(void) {
function harness_init (line 74) | void harness_init(void) {
FILE: panda/board/drivers/interrupts.h
type interrupt (line 1) | typedef struct interrupt {
function unused_interrupt_handler (line 11) | void unused_interrupt_handler(void) {
function handle_interrupt (line 28) | void handle_interrupt(IRQn_Type irq_type){
function interrupt_timer_handler (line 40) | void interrupt_timer_handler(void) {
function init_interrupts (line 49) | void init_interrupts(bool check_rate_limit){
FILE: panda/board/drivers/kline_init.h
function setup_timer5 (line 3) | void setup_timer5(void) {
function setup_kline (line 22) | void setup_kline(bool bitbang) {
function set_bitbanged_kline (line 40) | void set_bitbanged_kline(bool marking) {
function TIM5_IRQ_Handler (line 66) | void TIM5_IRQ_Handler(void) {
function bitbang_five_baud_addr (line 87) | bool bitbang_five_baud_addr(bool k, bool l, uint8_t addr) {
function bitbang_wakeup (line 104) | bool bitbang_wakeup(bool k, bool l) {
FILE: panda/board/drivers/pwm.h
function pwm_init (line 5) | void pwm_init(TIM_TypeDef *TIM, uint8_t channel){
function pwm_set (line 38) | void pwm_set(TIM_TypeDef *TIM, uint8_t channel, uint8_t percentage){
FILE: panda/board/drivers/registers.h
type reg (line 2) | typedef struct reg {
function hash_addr (line 18) | uint16_t hash_addr(uint32_t input){
function register_set (line 23) | void register_set(volatile uint32_t *addr, uint32_t val, uint32_t mask){
function register_set_bits (line 46) | void register_set_bits(volatile uint32_t *addr, uint32_t val) {
function register_clear_bits (line 52) | void register_clear_bits(volatile uint32_t *addr, uint32_t val) {
function check_registers (line 57) | void check_registers(void){
function init_registers (line 76) | void init_registers(void) {
FILE: panda/board/drivers/rtc.h
type timestamp_t (line 5) | typedef struct __attribute__((packed)) timestamp_t {
function to_bcd (line 15) | uint8_t to_bcd(uint16_t value){
function from_bcd (line 19) | uint16_t from_bcd(uint8_t value){
function rtc_init (line 23) | void rtc_init(void){
function rtc_set_time (line 46) | void rtc_set_time(timestamp_t time){
function timestamp_t (line 78) | timestamp_t rtc_get_time(void){
FILE: panda/board/drivers/timers.h
function timer_init (line 1) | void timer_init(TIM_TypeDef *TIM, int psc) {
function microsecond_timer_init (line 8) | void microsecond_timer_init(void) {
function microsecond_timer_get (line 14) | uint32_t microsecond_timer_get(void) {
function interrupt_timer_init (line 18) | void interrupt_timer_init(void) {
function tick_timer_init (line 28) | void tick_timer_init(void) {
FILE: panda/board/drivers/uart.h
type uart_ring (line 7) | typedef struct uart_ring {
function uart_ring (line 56) | uart_ring *get_ring_by_number(int a) {
function getc (line 79) | bool getc(uart_ring *q, char *elem) {
function injectc (line 93) | bool injectc(uart_ring *q, char elem) {
function putc (line 109) | bool putc(uart_ring *q, char elem) {
function uart_flush (line 129) | void uart_flush(uart_ring *q) {
function uart_flush_sync (line 135) | void uart_flush_sync(uart_ring *q) {
function clear_uart_buff (line 142) | void clear_uart_buff(uart_ring *q) {
function putch (line 152) | void putch(const char a) {
function puts (line 163) | void puts(const char *a) {
function putui (line 170) | void putui(uint32_t i) {
function puth (line 184) | void puth(unsigned int i) {
function puth2 (line 191) | void puth2(unsigned int i) {
function hexdump (line 198) | void hexdump(const void *a, int l) {
FILE: panda/board/drivers/usb.h
type uint16_t_uint8_t (line 3) | typedef union {
type USB_Setup_TypeDef (line 13) | typedef union _USB_Setup {
function USB_WritePacket (line 383) | void USB_WritePacket(const void *src, uint16_t len, uint32_t ep) {
function USB_WritePacket_EP0 (line 410) | void USB_WritePacket_EP0(uint8_t *src, uint16_t len) {
function usb_reset (line 428) | void usb_reset(void) {
function to_hex_char (line 471) | char to_hex_char(int a) {
function usb_setup (line 481) | void usb_setup(void) {
function usb_irqhandler (line 657) | void usb_irqhandler(void) {
function usb_outep3_resume_if_paused (line 932) | void usb_outep3_resume_if_paused(void) {
function usb_enumerated (line 941) | bool usb_enumerated(void) {
FILE: panda/board/early_init.h
function jump_to_bootloader (line 9) | void jump_to_bootloader(void) {
function early_initialization (line 23) | void early_initialization(void) {
FILE: panda/board/faults.h
function fault_occurred (line 35) | void fault_occurred(uint32_t fault) {
function fault_recovered (line 46) | void fault_recovered(uint32_t fault) {
FILE: panda/board/flasher.h
function debug_ring_callback (line 6) | void debug_ring_callback(uart_ring *ring) {}
function usb_cb_control_msg (line 9) | int usb_cb_control_msg(USB_Setup_TypeDef *setup, uint8_t *resp, bool har...
FILE: panda/board/libc.h
function delay (line 3) | void delay(uint32_t a) {
function memcmp (line 28) | int memcmp(const void * ptr1, const void * ptr2, unsigned int num) {
FILE: panda/board/main.c
type health_t (line 28) | struct __attribute__((packed)) health_t {
function check_started (line 53) | bool check_started(void) {
function debug_ring_callback (line 57) | void debug_ring_callback(uart_ring *ring) {
function set_safety_mode (line 95) | void set_safety_mode(uint16_t mode, int16_t param) {
function is_car_safety_mode (line 164) | bool is_car_safety_mode(uint16_t mode) {
function get_health_pkt (line 172) | int get_health_pkt(void *dat) {
function get_rtc_pkt (line 203) | int get_rtc_pkt(void *dat) {
function usb_cb_ep1_in (line 209) | int usb_cb_ep1_in(void *usbdata, int len, bool hardwired) {
function usb_cb_ep2_out (line 220) | void usb_cb_ep2_out(void *usbdata, int len, bool hardwired) {
function usb_cb_ep3_out (line 236) | void usb_cb_ep3_out(void *usbdata, int len, bool hardwired) {
function usb_cb_ep3_out_complete (line 252) | void usb_cb_ep3_out_complete(void) {
function usb_cb_enumeration_complete (line 258) | void usb_cb_enumeration_complete(void) {
function usb_cb_control_msg (line 263) | int usb_cb_control_msg(USB_Setup_TypeDef *setup, uint8_t *resp, bool har...
function __initialize_hardware_early (line 662) | void __initialize_hardware_early(void) {
function enable_fpu (line 666) | void __attribute__ ((noinline)) enable_fpu(void) {
function tick_handler (line 677) | void tick_handler(void) {
function main (line 793) | int main(void) {
FILE: panda/board/main_declarations.h
type board (line 5) | typedef struct board board;
type harness_configuration (line 6) | typedef struct harness_configuration harness_configuration;
FILE: panda/board/pedal/main.c
function puts (line 14) | void puts(const char *a) {
function puth (line 17) | void puth(unsigned int i) {
function puth2 (line 20) | void puth2(unsigned int i) {
function __initialize_hardware_early (line 29) | void __initialize_hardware_early(void) {
function debug_ring_callback (line 37) | void debug_ring_callback(uart_ring *ring) {
function usb_cb_ep1_in (line 44) | int usb_cb_ep1_in(void *usbdata, int len, bool hardwired) {
function usb_cb_ep2_out (line 50) | void usb_cb_ep2_out(void *usbdata, int len, bool hardwired) {
function usb_cb_ep3_out (line 55) | void usb_cb_ep3_out(void *usbdata, int len, bool hardwired) {
function usb_cb_ep3_out_complete (line 60) | void usb_cb_ep3_out_complete(void) {}
function usb_cb_enumeration_complete (line 61) | void usb_cb_enumeration_complete(void) {}
function usb_cb_control_msg (line 63) | int usb_cb_control_msg(USB_Setup_TypeDef *setup, uint8_t *resp, bool har...
function CAN1_TX_IRQ_Handler (line 104) | void CAN1_TX_IRQ_Handler(void) {
function CAN1_RX0_IRQ_Handler (line 127) | void CAN1_RX0_IRQ_Handler(void) {
function CAN1_SCE_IRQ_Handler (line 190) | void CAN1_SCE_IRQ_Handler(void) {
function TIM3_IRQ_Handler (line 201) | void TIM3_IRQ_Handler(void) {
function pedal (line 250) | void pedal(void) {
function main (line 267) | int main(void) {
FILE: panda/board/pedal/main_declarations.h
type board (line 5) | typedef struct board board;
type harness_configuration (line 6) | typedef struct harness_configuration harness_configuration;
FILE: panda/board/power_saving.h
function set_power_save_state (line 9) | void set_power_save_state(int state) {
FILE: panda/board/provision.h
function get_provision_chunk (line 7) | void get_provision_chunk(uint8_t *resp) {
function is_provisioned (line 15) | bool is_provisioned(void) {
FILE: panda/board/safety.h
function safety_rx_hook (line 48) | int safety_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function safety_tx_hook (line 52) | int safety_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function safety_tx_lin_hook (line 56) | int safety_tx_lin_hook(int lin_num, uint8_t *data, int len) {
function safety_fwd_hook (line 60) | int safety_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
function gen_crc_lookup_table (line 66) | void gen_crc_lookup_table(uint8_t poly, uint8_t crc_lut[]) {
function msg_allowed (line 79) | bool msg_allowed(CAN_FIFOMailBox_TypeDef *to_send, const CanMsg msg_list...
function get_ts_elapsed (line 96) | uint32_t get_ts_elapsed(uint32_t ts, uint32_t ts_last) {
function get_addr_check_index (line 100) | int get_addr_check_index(CAN_FIFOMailBox_TypeDef *to_push, AddrCheckStru...
function safety_tick (line 130) | void safety_tick(const addr_checks *rx_checks) {
function update_counter (line 147) | void update_counter(AddrCheckStruct addr_list[], int index, uint8_t coun...
function is_msg_valid (line 156) | bool is_msg_valid(AddrCheckStruct addr_list[], int index) {
function update_addr_timestamp (line 167) | void update_addr_timestamp(AddrCheckStruct addr_list[], int index) {
function addr_safety_check (line 174) | bool addr_safety_check(CAN_FIFOMailBox_TypeDef *to_push,
function generic_rx_checks (line 204) | void generic_rx_checks(bool stock_ecu_detected) {
function relay_malfunction_set (line 223) | void relay_malfunction_set(void) {
function relay_malfunction_reset (line 228) | void relay_malfunction_reset(void) {
type safety_hook_config (line 233) | typedef struct {
function set_safety_hooks (line 264) | int set_safety_hooks(uint16_t mode, int16_t param) {
function to_signed (line 312) | int to_signed(int d, int bits) {
function update_sample (line 321) | void update_sample(struct sample_t *sample, int sample_new) {
function max_limit_check (line 341) | bool max_limit_check(int val, const int MAX_VAL, const int MIN_VAL) {
function dist_to_meas_check (line 346) | bool dist_to_meas_check(int val, int val_last, struct sample_t *val_meas,
function driver_limit_check (line 362) | bool driver_limit_check(int val, int val_last, struct sample_t *val_driver,
function rt_rate_limit_check (line 384) | bool rt_rate_limit_check(int val, int val_last, const int MAX_RT_DELTA) {
function interpolate (line 396) | float interpolate(struct lookup_t xy, float x) {
FILE: panda/board/safety/safety_chrysler.h
function chrysler_get_checksum (line 21) | static uint8_t chrysler_get_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function chrysler_compute_checksum (line 26) | static uint8_t chrysler_compute_checksum(CAN_FIFOMailBox_TypeDef *to_pus...
function chrysler_get_counter (line 59) | static uint8_t chrysler_get_counter(CAN_FIFOMailBox_TypeDef *to_push) {
function chrysler_rx_hook (line 64) | static int chrysler_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function chrysler_tx_hook (line 120) | static int chrysler_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function chrysler_fwd_hook (line 189) | static int chrysler_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fw...
function addr_checks (line 207) | static const addr_checks* chrysler_init(int16_t param) {
FILE: panda/board/safety/safety_defaults.h
function default_rx_hook (line 6) | int default_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function addr_checks (line 13) | static const addr_checks* nooutput_init(int16_t param) {
function nooutput_tx_hook (line 20) | static int nooutput_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function nooutput_tx_lin_hook (line 25) | static int nooutput_tx_lin_hook(int lin_num, uint8_t *data, int len) {
function default_fwd_hook (line 32) | static int default_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
function addr_checks (line 71) | static const addr_checks* alloutput_init(int16_t param) {
function alloutput_tx_hook (line 78) | static int alloutput_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function alloutput_tx_lin_hook (line 83) | static int alloutput_tx_lin_hook(int lin_num, uint8_t *data, int len) {
FILE: panda/board/safety/safety_elm327.h
function elm327_tx_hook (line 1) | static int elm327_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function elm327_tx_lin_hook (line 21) | static int elm327_tx_lin_hook(int lin_num, uint8_t *data, int len) {
FILE: panda/board/safety/safety_ford.h
function ford_rx_hook (line 11) | static int ford_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function ford_tx_hook (line 68) | static int ford_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
FILE: panda/board/safety/safety_gm.h
function gm_rx_hook (line 37) | static int gm_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function gm_tx_hook (line 107) | static int gm_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function addr_checks (line 211) | static const addr_checks* gm_init(int16_t param) {
FILE: panda/board/safety/safety_gm_ascm.h
function gm_ascm_fwd_hook (line 4) | static int gm_ascm_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
FILE: panda/board/safety/safety_honda.h
function honda_get_checksum (line 56) | static uint8_t honda_get_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function honda_compute_checksum (line 61) | static uint8_t honda_compute_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function honda_get_counter (line 78) | static uint8_t honda_get_counter(CAN_FIFOMailBox_TypeDef *to_push) {
function honda_rx_hook (line 83) | static int honda_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function honda_tx_hook (line 189) | static int honda_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function addr_checks (line 308) | static const addr_checks* honda_nidec_init(int16_t param) {
function addr_checks (line 320) | static const addr_checks* honda_bosch_giraffe_init(int16_t param) {
function addr_checks (line 332) | static const addr_checks* honda_bosch_harness_init(int16_t param) {
function honda_nidec_fwd_hook (line 344) | static int honda_nidec_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to...
function honda_bosch_fwd_hook (line 369) | static int honda_bosch_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to...
FILE: panda/board/safety/safety_hyundai.h
function hyundai_get_counter (line 48) | static uint8_t hyundai_get_counter(CAN_FIFOMailBox_TypeDef *to_push) {
function hyundai_get_checksum (line 66) | static uint8_t hyundai_get_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function hyundai_compute_checksum (line 84) | static uint8_t hyundai_compute_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function hyundai_rx_hook (line 120) | static int hyundai_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function hyundai_tx_hook (line 175) | static int hyundai_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function hyundai_fwd_hook (line 248) | static int hyundai_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
function addr_checks (line 264) | static const addr_checks* hyundai_init(int16_t param) {
function addr_checks (line 275) | static const addr_checks* hyundai_legacy_init(int16_t param) {
FILE: panda/board/safety/safety_mazda.h
function mazda_rx_hook (line 44) | static int mazda_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function mazda_tx_hook (line 103) | static int mazda_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function mazda_fwd_hook (line 169) | static int mazda_fwd_hook(int bus, CAN_FIFOMailBox_TypeDef *to_fwd) {
function addr_checks (line 186) | static const addr_checks* mazda_init(int16_t param) {
FILE: panda/board/safety/safety_nissan.h
type lookup_t (line 4) | struct lookup_t
type lookup_t (line 8) | struct lookup_t
function nissan_rx_hook (line 37) | static int nissan_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function nissan_tx_hook (line 102) | static int nissan_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function nissan_fwd_hook (line 166) | static int nissan_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
function addr_checks (line 193) | static const addr_checks* nissan_init(int16_t param) {
FILE: panda/board/safety/safety_subaru.h
function subaru_get_checksum (line 40) | static uint8_t subaru_get_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function subaru_get_counter (line 44) | static uint8_t subaru_get_counter(CAN_FIFOMailBox_TypeDef *to_push) {
function subaru_compute_checksum (line 48) | static uint8_t subaru_compute_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function subaru_rx_hook (line 58) | static int subaru_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function subaru_legacy_rx_hook (line 105) | static int subaru_legacy_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function subaru_tx_hook (line 151) | static int subaru_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function subaru_legacy_tx_hook (line 215) | static int subaru_legacy_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function subaru_fwd_hook (line 279) | static int subaru_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
function subaru_legacy_fwd_hook (line 302) | static int subaru_legacy_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *...
function addr_checks (line 324) | static const addr_checks* subaru_init(int16_t param) {
function addr_checks (line 339) | static const addr_checks* subaru_legacy_init(int16_t param) {
FILE: panda/board/safety/safety_tesla.h
type lookup_t (line 1) | struct lookup_t
type lookup_t (line 5) | struct lookup_t
function tesla_rx_hook (line 31) | static int tesla_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function tesla_tx_hook (line 104) | static int tesla_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function tesla_fwd_hook (line 169) | static int tesla_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
function addr_checks (line 193) | static const addr_checks* tesla_init(int16_t param) {
FILE: panda/board/safety/safety_toyota.h
function toyota_compute_checksum (line 47) | static uint8_t toyota_compute_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function toyota_get_checksum (line 57) | static uint8_t toyota_get_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function toyota_rx_hook (line 62) | static int toyota_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function toyota_tx_hook (line 137) | static int toyota_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function addr_checks (line 246) | static const addr_checks* toyota_init(int16_t param) {
function toyota_fwd_hook (line 254) | static int toyota_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
FILE: panda/board/safety/safety_volkswagen.h
function volkswagen_get_checksum (line 61) | static uint8_t volkswagen_get_checksum(CAN_FIFOMailBox_TypeDef *to_push) {
function volkswagen_mqb_get_counter (line 65) | static uint8_t volkswagen_mqb_get_counter(CAN_FIFOMailBox_TypeDef *to_pu...
function volkswagen_pq_get_counter (line 70) | static uint8_t volkswagen_pq_get_counter(CAN_FIFOMailBox_TypeDef *to_pus...
function volkswagen_mqb_compute_crc (line 76) | static uint8_t volkswagen_mqb_compute_crc(CAN_FIFOMailBox_TypeDef *to_pu...
function volkswagen_pq_compute_checksum (line 111) | static uint8_t volkswagen_pq_compute_checksum(CAN_FIFOMailBox_TypeDef *t...
function addr_checks (line 122) | static const addr_checks* volkswagen_mqb_init(int16_t param) {
function addr_checks (line 133) | static const addr_checks* volkswagen_pq_init(int16_t param) {
function volkswagen_mqb_rx_hook (line 143) | static int volkswagen_mqb_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function volkswagen_pq_rx_hook (line 203) | static int volkswagen_pq_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
function volkswagen_steering_check (line 263) | static bool volkswagen_steering_check(int desired_torque) {
function volkswagen_mqb_tx_hook (line 303) | static int volkswagen_mqb_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function volkswagen_pq_tx_hook (line 339) | static int volkswagen_pq_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {
function volkswagen_fwd_hook (line 376) | static int volkswagen_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_...
FILE: panda/board/safety_declarations.h
type sample_t (line 5) | struct sample_t {
type lookup_t (line 12) | struct lookup_t {
type CanMsg (line 17) | typedef struct {
type CanMsgCheck (line 23) | typedef struct {
type AddrCheckStruct (line 33) | typedef struct {
type addr_checks (line 46) | typedef struct {
type sample_t (line 56) | struct sample_t
type sample_t (line 58) | struct sample_t
type sample_t (line 60) | struct sample_t
type lookup_t (line 64) | struct lookup_t
type addr_checks (line 80) | typedef const addr_checks* (*safety_hook_init)(int16_t param);
type safety_hooks (line 86) | typedef struct {
type sample_t (line 112) | struct sample_t
type sample_t (line 113) | struct sample_t
type sample_t (line 119) | struct sample_t
FILE: panda/board/stm32fx/board.h
function detect_board_type (line 24) | void detect_board_type(void) {
function detect_external_debug_serial (line 58) | void detect_external_debug_serial(void) {
FILE: panda/board/stm32fx/clock.h
function clock_init (line 1) | void clock_init(void) {
function watchdog_init (line 27) | void watchdog_init(void) {
function watchdog_feed (line 37) | void watchdog_feed(void) {
FILE: panda/board/stm32fx/clock_source.h
function EXTI0_IRQ_Handler (line 11) | void EXTI0_IRQ_Handler(void) {
function TIM1_UP_TIM10_IRQ_Handler (line 21) | void TIM1_UP_TIM10_IRQ_Handler(void) {
function TIM1_CC_IRQ_Handler (line 35) | void TIM1_CC_IRQ_Handler(void) {
function clock_source_init (line 49) | void clock_source_init(uint8_t mode){
FILE: panda/board/stm32fx/inc/cmsis_compiler.h
type T_UINT32 (line 101) | struct __attribute__((packed)) T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 105) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 109) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 113) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 117) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
function T_UINT32 (line 173) | struct __packed__ T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 177) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 181) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 185) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 189) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
function packed (line 244) | packed struct T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 248) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 252) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 256) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 260) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
FILE: panda/board/stm32fx/inc/cmsis_gcc.h
type T_UINT32 (line 74) | struct __attribute__((packed)) T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 82) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 90) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 98) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 106) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
function __cmsis_start (line 131) | void __cmsis_start(void)
function __STATIC_FORCEINLINE (line 233) | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
function __STATIC_FORCEINLINE (line 248) | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
function __STATIC_FORCEINLINE (line 260) | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
function __STATIC_FORCEINLINE (line 272) | __STATIC_FORCEINLINE uint32_t __get_IPSR(void)
function __STATIC_FORCEINLINE (line 286) | __STATIC_FORCEINLINE uint32_t __get_APSR(void)
function __STATIC_FORCEINLINE (line 300) | __STATIC_FORCEINLINE uint32_t __get_xPSR(void)
function __STATIC_FORCEINLINE (line 314) | __STATIC_FORCEINLINE uint32_t __get_PSP(void)
function __STATIC_FORCEINLINE (line 329) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
function __STATIC_FORCEINLINE (line 344) | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
function __STATIC_FORCEINLINE (line 356) | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
function __STATIC_FORCEINLINE (line 368) | __STATIC_FORCEINLINE uint32_t __get_MSP(void)
function __STATIC_FORCEINLINE (line 383) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
function __STATIC_FORCEINLINE (line 398) | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
function __STATIC_FORCEINLINE (line 410) | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
function __STATIC_FORCEINLINE (line 423) | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
function __STATIC_FORCEINLINE (line 437) | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
function __STATIC_FORCEINLINE (line 449) | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
function __STATIC_FORCEINLINE (line 464) | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
function __STATIC_FORCEINLINE (line 479) | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
function __STATIC_FORCEINLINE (line 491) | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
function __STATIC_FORCEINLINE (line 543) | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
function __STATIC_FORCEINLINE (line 558) | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
function __STATIC_FORCEINLINE (line 570) | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
function __STATIC_FORCEINLINE (line 583) | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
function __STATIC_FORCEINLINE (line 594) | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
function __STATIC_FORCEINLINE (line 609) | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
function __STATIC_FORCEINLINE (line 624) | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
function __STATIC_FORCEINLINE (line 636) | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
function __STATIC_FORCEINLINE (line 659) | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
function __STATIC_FORCEINLINE (line 681) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
function __STATIC_FORCEINLINE (line 704) | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
function __STATIC_FORCEINLINE (line 725) | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
function __STATIC_FORCEINLINE (line 746) | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
function __STATIC_FORCEINLINE (line 769) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
function __STATIC_FORCEINLINE (line 792) | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
function __STATIC_FORCEINLINE (line 813) | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
function __STATIC_FORCEINLINE (line 833) | __STATIC_FORCEINLINE uint32_t __get_FPSCR(void)
function __STATIC_FORCEINLINE (line 859) | __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)
function __STATIC_FORCEINLINE (line 986) | __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)
function __STATIC_FORCEINLINE (line 1001) | __STATIC_FORCEINLINE int16_t __REVSH(int16_t value)
function __STATIC_FORCEINLINE (line 1021) | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1048) | __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)
function __STATIC_FORCEINLINE (line 1078) | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
function __STATIC_FORCEINLINE (line 1107) | __STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)
function __STATIC_FORCEINLINE (line 1129) | __STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)
function __STATIC_FORCEINLINE (line 1151) | __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)
function __STATIC_FORCEINLINE (line 1168) | __STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *...
function __STATIC_FORCEINLINE (line 1185) | __STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t...
function __STATIC_FORCEINLINE (line 1202) | __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t...
function __STATIC_FORCEINLINE (line 1215) | __STATIC_FORCEINLINE void __CLREX(void)
function __STATIC_FORCEINLINE (line 1268) | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
function __STATIC_FORCEINLINE (line 1283) | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1305) | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1327) | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1342) | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1354) | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1366) | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1382) | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
function __STATIC_FORCEINLINE (line 1407) | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
function __STATIC_FORCEINLINE (line 1437) | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1452) | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1467) | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1482) | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1494) | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1506) | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1518) | __STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1533) | __STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1548) | __STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1565) | __STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *...
function __STATIC_FORCEINLINE (line 1582) | __STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t...
function __STATIC_FORCEINLINE (line 1599) | __STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t ...
function __STATIC_FORCEINLINE (line 1621) | __STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1629) | __STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1637) | __STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1645) | __STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1653) | __STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1661) | __STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1670) | __STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1678) | __STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1686) | __STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1694) | __STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1702) | __STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1710) | __STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1719) | __STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1727) | __STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1735) | __STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1743) | __STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1751) | __STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1759) | __STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1767) | __STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1775) | __STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1783) | __STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1791) | __STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1799) | __STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1807) | __STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1815) | __STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1823) | __STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1831) | __STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1839) | __STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1847) | __STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1855) | __STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1863) | __STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1871) | __STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1879) | __STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1887) | __STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1895) | __STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1903) | __STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1911) | __STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1919) | __STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint3...
function __STATIC_FORCEINLINE (line 1941) | __STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)
function __STATIC_FORCEINLINE (line 1949) | __STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1957) | __STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)
function __STATIC_FORCEINLINE (line 1965) | __STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1973) | __STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1981) | __STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1989) | __STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint3...
function __STATIC_FORCEINLINE (line 1997) | __STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2005) | __STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2022) | __STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uin...
function __STATIC_FORCEINLINE (line 2039) | __STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 2047) | __STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 2055) | __STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint3...
function __STATIC_FORCEINLINE (line 2063) | __STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2071) | __STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2088) | __STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uin...
function __STATIC_FORCEINLINE (line 2105) | __STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 2113) | __STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2)
function __STATIC_FORCEINLINE (line 2121) | __STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2)
function __STATIC_FORCEINLINE (line 2154) | __STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t ...
FILE: panda/board/stm32fx/inc/core_cm3.h
type APSR_Type (line 206) | typedef union
type IPSR_Type (line 240) | typedef union
type xPSR_Type (line 258) | typedef union
type CONTROL_Type (line 309) | typedef union
type NVIC_Type (line 340) | typedef struct
type SCB_Type (line 374) | typedef struct
type SCnSCB_Type (line 655) | typedef struct
type SysTick_Type (line 701) | typedef struct
type DWT_Type (line 841) | typedef struct
type TPI_Type (line 988) | typedef struct
type MPU_Type (line 1150) | typedef struct
type CoreDebug_Type (line 1246) | typedef struct
function __STATIC_INLINE (line 1472) | __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
function __STATIC_INLINE (line 1491) | __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
function __STATIC_INLINE (line 1503) | __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1522) | __STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1541) | __STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1560) | __STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1579) | __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1594) | __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1611) | __STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)
function __STATIC_INLINE (line 1633) | __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
function __STATIC_INLINE (line 1655) | __STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
function __STATIC_INLINE (line 1680) | __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, ui...
function __STATIC_INLINE (line 1707) | __STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t Pr...
function __STATIC_INLINE (line 1730) | __STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
function __STATIC_INLINE (line 1746) | __STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
function __NVIC_SystemReset (line 1757) | void __NVIC_SystemReset(void)
function __STATIC_INLINE (line 1799) | __STATIC_INLINE uint32_t SCB_GetFPUType(void)
function __STATIC_INLINE (line 1830) | __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
function __STATIC_INLINE (line 1872) | __STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
function __STATIC_INLINE (line 1893) | __STATIC_INLINE int32_t ITM_ReceiveChar (void)
function __STATIC_INLINE (line 1913) | __STATIC_INLINE int32_t ITM_CheckChar (void)
FILE: panda/board/stm32fx/inc/core_cm4.h
type APSR_Type (line 259) | typedef union
type IPSR_Type (line 298) | typedef union
type xPSR_Type (line 316) | typedef union
type CONTROL_Type (line 371) | typedef union
type NVIC_Type (line 406) | typedef struct
type SCB_Type (line 440) | typedef struct
type SCnSCB_Type (line 719) | typedef struct
type SysTick_Type (line 759) | typedef struct
type DWT_Type (line 899) | typedef struct
type TPI_Type (line 1046) | typedef struct
type MPU_Type (line 1208) | typedef struct
type FPU_Type (line 1304) | typedef struct
type CoreDebug_Type (line 1416) | typedef struct
function __STATIC_INLINE (line 1648) | __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
function __STATIC_INLINE (line 1667) | __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
function __STATIC_INLINE (line 1679) | __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1698) | __STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1717) | __STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1736) | __STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1755) | __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1770) | __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1787) | __STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)
function __STATIC_INLINE (line 1809) | __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
function __STATIC_INLINE (line 1831) | __STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
function __STATIC_INLINE (line 1856) | __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, ui...
function __STATIC_INLINE (line 1883) | __STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t Pr...
function __STATIC_INLINE (line 1906) | __STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
function __STATIC_INLINE (line 1922) | __STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
function __NVIC_SystemReset (line 1933) | void __NVIC_SystemReset(void)
function __STATIC_INLINE (line 1976) | __STATIC_INLINE uint32_t SCB_GetFPUType(void)
function __STATIC_INLINE (line 2017) | __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
function __STATIC_INLINE (line 2059) | __STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
function __STATIC_INLINE (line 2080) | __STATIC_INLINE int32_t ITM_ReceiveChar (void)
function __STATIC_INLINE (line 2100) | __STATIC_INLINE int32_t ITM_CheckChar (void)
FILE: panda/board/stm32fx/inc/mpu_armv7.h
type ARM_MPU_Region_t (line 183) | typedef struct {
function __STATIC_INLINE (line 191) | __STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)
function __STATIC_INLINE (line 203) | __STATIC_INLINE void ARM_MPU_Disable(void)
function __STATIC_INLINE (line 215) | __STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)
function __STATIC_INLINE (line 225) | __STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr)
function __STATIC_INLINE (line 236) | __STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, ui...
function __STATIC_INLINE (line 248) | __STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const...
function __STATIC_INLINE (line 261) | __STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_...
FILE: panda/board/stm32fx/inc/stm32f205xx.h
type IRQn_Type (line 83) | typedef enum
type ADC_TypeDef (line 190) | typedef struct
type ADC_Common_TypeDef (line 214) | typedef struct
type CAN_TxMailBox_TypeDef (line 227) | typedef struct
type CAN_FIFOMailBox_TypeDef (line 239) | typedef struct
type CAN_FilterRegister_TypeDef (line 251) | typedef struct
type CAN_TypeDef (line 261) | typedef struct
type CRC_TypeDef (line 291) | typedef struct
type DAC_TypeDef (line 304) | typedef struct
type DBGMCU_TypeDef (line 326) | typedef struct
type DMA_Stream_TypeDef (line 339) | typedef struct
type DMA_TypeDef (line 349) | typedef struct
type EXTI_TypeDef (line 362) | typedef struct
type FLASH_TypeDef (line 376) | typedef struct
type FSMC_Bank1_TypeDef (line 391) | typedef struct
type FSMC_Bank1E_TypeDef (line 400) | typedef struct
type FSMC_Bank2_3_TypeDef (line 409) | typedef struct
type FSMC_Bank4_TypeDef (line 431) | typedef struct
type GPIO_TypeDef (line 445) | typedef struct
type SYSCFG_TypeDef (line 462) | typedef struct
type I2C_TypeDef (line 475) | typedef struct
type IWDG_TypeDef (line 492) | typedef struct
type PWR_TypeDef (line 504) | typedef struct
type RCC_TypeDef (line 514) | typedef struct
type RTC_TypeDef (line 553) | typedef struct
type SDIO_TypeDef (line 602) | typedef struct
type SPI_TypeDef (line 630) | typedef struct
type TIM_TypeDef (line 647) | typedef struct
type USART_TypeDef (line 676) | typedef struct
type WWDG_TypeDef (line 691) | typedef struct
type RNG_TypeDef (line 703) | typedef struct
type USB_OTG_GlobalTypeDef (line 715) | typedef struct
type USB_OTG_DeviceTypeDef (line 743) | typedef struct
type USB_OTG_INEndpointTypeDef (line 772) | typedef struct
type USB_OTG_OUTEndpointTypeDef (line 789) | typedef struct
type USB_OTG_HostTypeDef (line 805) | typedef struct
type USB_OTG_HostChannelTypeDef (line 821) | typedef struct
FILE: panda/board/stm32fx/inc/stm32f2xx.h
type FlagStatus (line 140) | typedef enum
type FunctionalState (line 146) | typedef enum
type ErrorStatus (line 153) | typedef enum
FILE: panda/board/stm32fx/inc/stm32f2xx_hal_def.h
type HAL_StatusTypeDef (line 57) | typedef enum
type HAL_LockTypeDef (line 68) | typedef enum
FILE: panda/board/stm32fx/inc/stm32f413xx.h
type IRQn_Type (line 84) | typedef enum
type ADC_TypeDef (line 209) | typedef struct
type ADC_Common_TypeDef (line 233) | typedef struct
type CAN_TxMailBox_TypeDef (line 246) | typedef struct
type CAN_FIFOMailBox_TypeDef (line 258) | typedef struct
type CAN_FilterRegister_TypeDef (line 270) | typedef struct
type CAN_TypeDef (line 280) | typedef struct
type CRC_TypeDef (line 310) | typedef struct
type DFSDM_Filter_TypeDef (line 322) | typedef struct
type DFSDM_Channel_TypeDef (line 344) | typedef struct
type DAC_TypeDef (line 358) | typedef struct
type DBGMCU_TypeDef (line 380) | typedef struct
type DMA_Stream_TypeDef (line 393) | typedef struct
type DMA_TypeDef (line 403) | typedef struct
type EXTI_TypeDef (line 415) | typedef struct
type FLASH_TypeDef (line 429) | typedef struct
type FSMC_Bank1_TypeDef (line 446) | typedef struct
type FSMC_Bank1E_TypeDef (line 455) | typedef struct
type GPIO_TypeDef (line 463) | typedef struct
type SYSCFG_TypeDef (line 480) | typedef struct
type I2C_TypeDef (line 497) | typedef struct
type FMPI2C_TypeDef (line 515) | typedef struct
type IWDG_TypeDef (line 534) | typedef struct
type PWR_TypeDef (line 547) | typedef struct
type RCC_TypeDef (line 557) | typedef struct
type RTC_TypeDef (line 599) | typedef struct
type SAI_TypeDef (line 647) | typedef struct
type SAI_Block_TypeDef (line 652) | typedef struct
type SDIO_TypeDef (line 668) | typedef struct
type SPI_TypeDef (line 696) | typedef struct
type QUADSPI_TypeDef (line 713) | typedef struct
type TIM_TypeDef (line 734) | typedef struct
type USART_TypeDef (line 763) | typedef struct
type WWDG_TypeDef (line 778) | typedef struct
type RNG_TypeDef (line 789) | typedef struct
type USB_OTG_GlobalTypeDef (line 799) | typedef struct
type USB_OTG_DeviceTypeDef (line 830) | typedef struct
type USB_OTG_INEndpointTypeDef (line 857) | typedef struct
type USB_OTG_OUTEndpointTypeDef (line 872) | typedef struct
type USB_OTG_HostTypeDef (line 886) | typedef struct
type USB_OTG_HostChannelTypeDef (line 900) | typedef struct
type LPTIM_TypeDef (line 914) | typedef struct
FILE: panda/board/stm32fx/inc/stm32f4xx.h
type FlagStatus (line 203) | typedef enum
type FunctionalState (line 209) | typedef enum
type ErrorStatus (line 216) | typedef enum
FILE: panda/board/stm32fx/inc/stm32f4xx_hal_def.h
type HAL_StatusTypeDef (line 57) | typedef enum
type HAL_LockTypeDef (line 68) | typedef enum
FILE: panda/board/stm32fx/interrupt_handlers.h
function WWDG_IRQHandler (line 4) | void WWDG_IRQHandler(void) {handle_interrupt(WWDG_IRQn);}
function PVD_IRQHandler (line 5) | void PVD_IRQHandler(void) {handle_interrupt(PVD_IRQn);}
function TAMP_STAMP_IRQHandler (line 6) | void TAMP_STAMP_IRQHandler(void) {handle_interrupt(TAMP_STAMP_IRQn);}
function RTC_WKUP_IRQHandler (line 7) | void RTC_WKUP_IRQHandler(void) {handle_interrupt(RTC_WKUP_IRQn);}
function FLASH_IRQHandler (line 8) | void FLASH_IRQHandler(void) {handle_interrupt(FLASH_IRQn);}
function RCC_IRQHandler (line 9) | void RCC_IRQHandler(void) {handle_interrupt(RCC_IRQn);}
function EXTI0_IRQHandler (line 10) | void EXTI0_IRQHandler(void) {handle_interrupt(EXTI0_IRQn);}
function EXTI1_IRQHandler (line 11) | void EXTI1_IRQHandler(void) {handle_interrupt(EXTI1_IRQn);}
function EXTI2_IRQHandler (line 12) | void EXTI2_IRQHandler(void) {handle_interrupt(EXTI2_IRQn);}
function EXTI3_IRQHandler (line 13) | void EXTI3_IRQHandler(void) {handle_interrupt(EXTI3_IRQn);}
function EXTI4_IRQHandler (line 14) | void EXTI4_IRQHandler(void) {handle_interrupt(EXTI4_IRQn);}
function DMA1_Stream0_IRQHandler (line 15) | void DMA1_Stream0_IRQHandler(void) {handle_interrupt(DMA1_Stream0_IRQn);}
function DMA1_Stream1_IRQHandler (line 16) | void DMA1_Stream1_IRQHandler(void) {handle_interrupt(DMA1_Stream1_IRQn);}
function DMA1_Stream2_IRQHandler (line 17) | void DMA1_Stream2_IRQHandler(void) {handle_interrupt(DMA1_Stream2_IRQn);}
function DMA1_Stream3_IRQHandler (line 18) | void DMA1_Stream3_IRQHandler(void) {handle_interrupt(DMA1_Stream3_IRQn);}
function DMA1_Stream4_IRQHandler (line 19) | void DMA1_Stream4_IRQHandler(void) {handle_interrupt(DMA1_Stream4_IRQn);}
function DMA1_Stream5_IRQHandler (line 20) | void DMA1_Stream5_IRQHandler(void) {handle_interrupt(DMA1_Stream5_IRQn);}
function DMA1_Stream6_IRQHandler (line 21) | void DMA1_Stream6_IRQHandler(void) {handle_interrupt(DMA1_Stream6_IRQn);}
function ADC_IRQHandler (line 22) | void ADC_IRQHandler(void) {handle_interrupt(ADC_IRQn);}
function CAN1_TX_IRQHandler (line 23) | void CAN1_TX_IRQHandler(void) {handle_interrupt(CAN1_TX_IRQn);}
function CAN1_RX0_IRQHandler (line 24) | void CAN1_RX0_IRQHandler(void) {handle_interrupt(CAN1_RX0_IRQn);}
function CAN1_RX1_IRQHandler (line 25) | void CAN1_RX1_IRQHandler(void) {handle_interrupt(CAN1_RX1_IRQn);}
function CAN1_SCE_IRQHandler (line 26) | void CAN1_SCE_IRQHandler(void) {handle_interrupt(CAN1_SCE_IRQn);}
function EXTI9_5_IRQHandler (line 27) | void EXTI9_5_IRQHandler(void) {handle_interrupt(EXTI9_5_IRQn);}
function TIM1_BRK_TIM9_IRQHandler (line 28) | void TIM1_BRK_TIM9_IRQHandler(void) {handle_interrupt(TIM1_BRK_TIM9_IRQn);}
function TIM1_UP_TIM10_IRQHandler (line 29) | void TIM1_UP_TIM10_IRQHandler(void) {handle_interrupt(TIM1_UP_TIM10_IRQn);}
function TIM1_TRG_COM_TIM11_IRQHandler (line 30) | void TIM1_TRG_COM_TIM11_IRQHandler(void) {handle_interrupt(TIM1_TRG_COM_...
function TIM1_CC_IRQHandler (line 31) | void TIM1_CC_IRQHandler(void) {handle_interrupt(TIM1_CC_IRQn);}
function TIM2_IRQHandler (line 32) | void TIM2_IRQHandler(void) {handle_interrupt(TIM2_IRQn);}
function TIM3_IRQHandler (line 33) | void TIM3_IRQHandler(void) {handle_interrupt(TIM3_IRQn);}
function TIM4_IRQHandler (line 34) | void TIM4_IRQHandler(void) {handle_interrupt(TIM4_IRQn);}
function I2C1_EV_IRQHandler (line 35) | void I2C1_EV_IRQHandler(void) {handle_interrupt(I2C1_EV_IRQn);}
function I2C1_ER_IRQHandler (line 36) | void I2C1_ER_IRQHandler(void) {handle_interrupt(I2C1_ER_IRQn);}
function I2C2_EV_IRQHandler (line 37) | void I2C2_EV_IRQHandler(void) {handle_interrupt(I2C2_EV_IRQn);}
function I2C2_ER_IRQHandler (line 38) | void I2C2_ER_IRQHandler(void) {handle_interrupt(I2C2_ER_IRQn);}
function SPI1_IRQHandler (line 39) | void SPI1_IRQHandler(void) {handle_interrupt(SPI1_IRQn);}
function SPI2_IRQHandler (line 40) | void SPI2_IRQHandler(void) {handle_interrupt(SPI2_IRQn);}
function USART1_IRQHandler (line 41) | void USART1_IRQHandler(void) {handle_interrupt(USART1_IRQn);}
function USART2_IRQHandler (line 42) | void USART2_IRQHandler(void) {handle_interrupt(USART2_IRQn);}
function USART3_IRQHandler (line 43) | void USART3_IRQHandler(void) {handle_interrupt(USART3_IRQn);}
function EXTI15_10_IRQHandler (line 44) | void EXTI15_10_IRQHandler(void) {handle_interrupt(EXTI15_10_IRQn);}
function RTC_Alarm_IRQHandler (line 45) | void RTC_Alarm_IRQHandler(void) {handle_interrupt(RTC_Alarm_IRQn);}
function OTG_FS_WKUP_IRQHandler (line 46) | void OTG_FS_WKUP_IRQHandler(void) {handle_interrupt(OTG_FS_WKUP_IRQn);}
function TIM8_BRK_TIM12_IRQHandler (line 47) | void TIM8_BRK_TIM12_IRQHandler(void) {handle_interrupt(TIM8_BRK_TIM12_IR...
function TIM8_UP_TIM13_IRQHandler (line 48) | void TIM8_UP_TIM13_IRQHandler(void) {handle_interrupt(TIM8_UP_TIM13_IRQn);}
function TIM8_TRG_COM_TIM14_IRQHandler (line 49) | void TIM8_TRG_COM_TIM14_IRQHandler(void) {handle_interrupt(TIM8_TRG_COM_...
function TIM8_CC_IRQHandler (line 50) | void TIM8_CC_IRQHandler(void) {handle_interrupt(TIM8_CC_IRQn);}
function DMA1_Stream7_IRQHandler (line 51) | void DMA1_Stream7_IRQHandler(void) {handle_interrupt(DMA1_Stream7_IRQn);}
function FSMC_IRQHandler (line 52) | void FSMC_IRQHandler(void) {handle_interrupt(FSMC_IRQn);}
function SDIO_IRQHandler (line 53) | void SDIO_IRQHandler(void) {handle_interrupt(SDIO_IRQn);}
function TIM5_IRQHandler (line 54) | void TIM5_IRQHandler(void) {handle_interrupt(TIM5_IRQn);}
function SPI3_IRQHandler (line 55) | void SPI3_IRQHandler(void) {handle_interrupt(SPI3_IRQn);}
function UART4_IRQHandler (line 56) | void UART4_IRQHandler(void) {handle_interrupt(UART4_IRQn);}
function UART5_IRQHandler (line 57) | void UART5_IRQHandler(void) {handle_interrupt(UART5_IRQn);}
function TIM6_DAC_IRQHandler (line 58) | void TIM6_DAC_IRQHandler(void) {handle_interrupt(TIM6_DAC_IRQn);}
function TIM7_IRQHandler (line 59) | void TIM7_IRQHandler(void) {handle_interrupt(TIM7_IRQn);}
function DMA2_Stream0_IRQHandler (line 60) | void DMA2_Stream0_IRQHandler(void) {handle_interrupt(DMA2_Stream0_IRQn);}
function DMA2_Stream1_IRQHandler (line 61) | void DMA2_Stream1_IRQHandler(void) {handle_interrupt(DMA2_Stream1_IRQn);}
function DMA2_Stream2_IRQHandler (line 62) | void DMA2_Stream2_IRQHandler(void) {handle_interrupt(DMA2_Stream2_IRQn);}
function DMA2_Stream3_IRQHandler (line 63) | void DMA2_Stream3_IRQHandler(void) {handle_interrupt(DMA2_Stream3_IRQn);}
function DMA2_Stream4_IRQHandler (line 64) | void DMA2_Stream4_IRQHandler(void) {handle_interrupt(DMA2_Stream4_IRQn);}
function CAN2_TX_IRQHandler (line 65) | void CAN2_TX_IRQHandler(void) {handle_interrupt(CAN2_TX_IRQn);}
function CAN2_RX0_IRQHandler (line 66) | void CAN2_RX0_IRQHandler(void) {handle_interrupt(CAN2_RX0_IRQn);}
function CAN2_RX1_IRQHandler (line 67) | void CAN2_RX1_IRQHandler(void) {handle_interrupt(CAN2_RX1_IRQn);}
function CAN2_SCE_IRQHandler (line 68) | void CAN2_SCE_IRQHandler(void) {handle_interrupt(CAN2_SCE_IRQn);}
function OTG_FS_IRQHandler (line 69) | void OTG_FS_IRQHandler(void) {handle_interrupt(OTG_FS_IRQn);}
function DMA2_Stream5_IRQHandler (line 70) | void DMA2_Stream5_IRQHandler(void) {handle_interrupt(DMA2_Stream5_IRQn);}
function DMA2_Stream6_IRQHandler (line 71) | void DMA2_Stream6_IRQHandler(void) {handle_interrupt(DMA2_Stream6_IRQn);}
function DMA2_Stream7_IRQHandler (line 72) | void DMA2_Stream7_IRQHandler(void) {handle_interrupt(DMA2_Stream7_IRQn);}
function USART6_IRQHandler (line 73) | void USART6_IRQHandler(void) {handle_interrupt(USART6_IRQn);}
function I2C3_EV_IRQHandler (line 74) | void I2C3_EV_IRQHandler(void) {handle_interrupt(I2C3_EV_IRQn);}
function I2C3_ER_IRQHandler (line 75) | void I2C3_ER_IRQHandler(void) {handle_interrupt(I2C3_ER_IRQn);}
function DFSDM1_FLT0_IRQHandler (line 77) | void DFSDM1_FLT0_IRQHandler(void) {handle_interrupt(DFSDM1_FLT0_IRQn);}
function DFSDM1_FLT1_IRQHandler (line 78) | void DFSDM1_FLT1_IRQHandler(void) {handle_interrupt(DFSDM1_FLT1_IRQn);}
function CAN3_TX_IRQHandler (line 79) | void CAN3_TX_IRQHandler(void) {handle_interrupt(CAN3_TX_IRQn);}
function CAN3_RX0_IRQHandler (line 80) | void CAN3_RX0_IRQHandler(void) {handle_interrupt(CAN3_RX0_IRQn);}
function CAN3_RX1_IRQHandler (line 81) | void CAN3_RX1_IRQHandler(void) {handle_interrupt(CAN3_RX1_IRQn);}
function CAN3_SCE_IRQHandler (line 82) | void CAN3_SCE_IRQHandler(void) {handle_interrupt(CAN3_SCE_IRQn);}
function RNG_IRQHandler (line 83) | void RNG_IRQHandler(void) {handle_interrupt(RNG_IRQn);}
function FPU_IRQHandler (line 84) | void FPU_IRQHandler(void) {handle_interrupt(FPU_IRQn);}
function UART7_IRQHandler (line 85) | void UART7_IRQHandler(void) {handle_interrupt(UART7_IRQn);}
function UART8_IRQHandler (line 86) | void UART8_IRQHandler(void) {handle_interrupt(UART8_IRQn);}
function SPI4_IRQHandler (line 87) | void SPI4_IRQHandler(void) {handle_interrupt(SPI4_IRQn);}
function SPI5_IRQHandler (line 88) | void SPI5_IRQHandler(void) {handle_interrupt(SPI5_IRQn);}
function SAI1_IRQHandler (line 89) | void SAI1_IRQHandler(void) {handle_interrupt(SAI1_IRQn);}
function UART9_IRQHandler (line 90) | void UART9_IRQHandler(void) {handle_interrupt(UART9_IRQn);}
function UART10_IRQHandler (line 91) | void UART10_IRQHandler(void) {handle_interrupt(UART10_IRQn);}
function QUADSPI_IRQHandler (line 92) | void QUADSPI_IRQHandler(void) {handle_interrupt(QUADSPI_IRQn);}
function FMPI2C1_EV_IRQHandler (line 93) | void FMPI2C1_EV_IRQHandler(void) {handle_interrupt(FMPI2C1_EV_IRQn);}
function FMPI2C1_ER_IRQHandler (line 94) | void FMPI2C1_ER_IRQHandler(void) {handle_interrupt(FMPI2C1_ER_IRQn);}
function LPTIM1_IRQHandler (line 95) | void LPTIM1_IRQHandler(void) {handle_interrupt(LPTIM1_IRQn);}
function DFSDM2_FLT0_IRQHandler (line 96) | void DFSDM2_FLT0_IRQHandler(void) {handle_interrupt(DFSDM2_FLT0_IRQn);}
function DFSDM2_FLT1_IRQHandler (line 97) | void DFSDM2_FLT1_IRQHandler(void) {handle_interrupt(DFSDM2_FLT1_IRQn);}
function DFSDM2_FLT2_IRQHandler (line 98) | void DFSDM2_FLT2_IRQHandler(void) {handle_interrupt(DFSDM2_FLT2_IRQn);}
function DFSDM2_FLT3_IRQHandler (line 99) | void DFSDM2_FLT3_IRQHandler(void) {handle_interrupt(DFSDM2_FLT3_IRQn);}
FILE: panda/board/stm32fx/lladc.h
function adc_init (line 13) | void adc_init(void) {
function adc_get (line 19) | uint32_t adc_get(unsigned int channel) {
function adc_get_voltage (line 31) | uint32_t adc_get_voltage(void) {
FILE: panda/board/stm32fx/llbxcan.h
function llcan_set_speed (line 15) | bool llcan_set_speed(CAN_TypeDef *CAN_obj, uint32_t speed, bool loopback...
function llcan_init (line 67) | bool llcan_init(CAN_TypeDef *CAN_obj) {
function llcan_clear_send (line 123) | void llcan_clear_send(CAN_TypeDef *CAN_obj) {
FILE: panda/board/stm32fx/lldac.h
function dac_init (line 1) | void dac_init(void) {
function dac_set (line 8) | void dac_set(int channel, uint32_t value) {
FILE: panda/board/stm32fx/llfan.h
function EXTI2_IRQ_Handler (line 2) | void EXTI2_IRQ_Handler(void) {
function fan_init (line 10) | void fan_init(void){
FILE: panda/board/stm32fx/llflash.h
function flash_is_locked (line 1) | bool flash_is_locked(void) {
function flash_unlock (line 5) | void flash_unlock(void) {
function flash_erase_sector (line 10) | bool flash_erase_sector(uint8_t sector, bool unlocked) {
function flash_write_word (line 21) | void flash_write_word(void *prog_ptr, uint32_t data) {
function flush_write_buffer (line 28) | void flush_write_buffer(void) { }
FILE: panda/board/stm32fx/llrtc.h
function enable_bdomain_protection (line 3) | void enable_bdomain_protection(void) {
function disable_bdomain_protection (line 7) | void disable_bdomain_protection(void) {
FILE: panda/board/stm32fx/llspi.h
function spi_tx_dma (line 13) | void spi_tx_dma(void *addr, int len) {
function spi_rx_dma (line 35) | void spi_rx_dma(void *addr, int len) {
function DMA2_Stream2_IRQ_Handler (line 62) | void DMA2_Stream2_IRQ_Handler(void) {
function DMA2_Stream3_IRQ_Handler (line 78) | void DMA2_Stream3_IRQ_Handler(void) {
function EXTI4_IRQ_Handler (line 91) | void EXTI4_IRQ_Handler(void) {
function spi_init (line 105) | void spi_init(void) {
FILE: panda/board/stm32fx/lluart.h
function uart_tx_ring (line 3) | void uart_tx_ring(uart_ring *q){
function uart_rx_ring (line 23) | void uart_rx_ring(uart_ring *q){
function uart_send_break (line 45) | void uart_send_break(uart_ring *u) {
function dma_pointer_handler (line 55) | void dma_pointer_handler(uart_ring *q, uint32_t dma_ndtr) {
function uart_interrupt_handler (line 81) | void uart_interrupt_handler(uart_ring *q) {
function USART1_IRQ_Handler (line 120) | void USART1_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_gps); }
function USART2_IRQ_Handler (line 121) | void USART2_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_debug); }
function USART3_IRQ_Handler (line 122) | void USART3_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_lin2); }
function UART5_IRQ_Handler (line 123) | void UART5_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_lin1); }
function DMA2_Stream5_IRQ_Handler (line 125) | void DMA2_Stream5_IRQ_Handler(void) {
function dma_rx_init (line 150) | void dma_rx_init(uart_ring *q) {
function uart_set_baud (line 185) | void uart_set_baud(USART_TypeDef *u, unsigned int baud) {
function uart_init (line 194) | void uart_init(uart_ring *q, int baud) {
FILE: panda/board/stm32fx/llusb.h
type USB_OTG_HostPortTypeDef (line 1) | typedef struct
function OTG_FS_IRQ_Handler (line 23) | void OTG_FS_IRQ_Handler(void) {
function usb_init (line 31) | void usb_init(void) {
FILE: panda/board/stm32fx/peripherals.h
function gpio_usb_init (line 1) | void gpio_usb_init(void) {
function gpio_usart2_init (line 8) | void gpio_usart2_init(void) {
function common_init_gpio (line 15) | void common_init_gpio(void) {
function flasher_peripherals_init (line 44) | void flasher_peripherals_init(void) {
function peripherals_init (line 52) | void peripherals_init(void) {
function enable_interrupt_timer (line 87) | void enable_interrupt_timer(void) {
FILE: panda/board/stm32fx/stm32fx_config.h
function early_gpio_float (line 84) | void early_gpio_float(void) {
FILE: panda/board/stm32h7/board.h
function board_id (line 15) | uint8_t board_id(void) {
function detect_board_type (line 22) | void detect_board_type(void) {
function detect_external_debug_serial (line 33) | void detect_external_debug_serial(void) {
FILE: panda/board/stm32h7/clock.h
function clock_init (line 1) | void clock_init(void) {
FILE: panda/board/stm32h7/inc/cmsis_compiler.h
type T_UINT32 (line 101) | struct __attribute__((packed)) T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 105) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 109) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 113) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 117) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
function T_UINT32 (line 173) | struct __packed__ T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 177) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 181) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 185) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 189) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
function packed (line 244) | packed struct T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 248) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 252) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 256) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 260) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
FILE: panda/board/stm32h7/inc/cmsis_gcc.h
type T_UINT32 (line 74) | struct __attribute__((packed)) T_UINT32 { uint32_t v; }
function __PACKED_STRUCT (line 82) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
function __PACKED_STRUCT (line 90) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
function __PACKED_STRUCT (line 98) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
function __PACKED_STRUCT (line 106) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
function __cmsis_start (line 131) | void __cmsis_start(void)
function __STATIC_FORCEINLINE (line 233) | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
function __STATIC_FORCEINLINE (line 248) | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
function __STATIC_FORCEINLINE (line 260) | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
function __STATIC_FORCEINLINE (line 272) | __STATIC_FORCEINLINE uint32_t __get_IPSR(void)
function __STATIC_FORCEINLINE (line 286) | __STATIC_FORCEINLINE uint32_t __get_APSR(void)
function __STATIC_FORCEINLINE (line 300) | __STATIC_FORCEINLINE uint32_t __get_xPSR(void)
function __STATIC_FORCEINLINE (line 314) | __STATIC_FORCEINLINE uint32_t __get_PSP(void)
function __STATIC_FORCEINLINE (line 329) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
function __STATIC_FORCEINLINE (line 344) | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
function __STATIC_FORCEINLINE (line 356) | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
function __STATIC_FORCEINLINE (line 368) | __STATIC_FORCEINLINE uint32_t __get_MSP(void)
function __STATIC_FORCEINLINE (line 383) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
function __STATIC_FORCEINLINE (line 398) | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
function __STATIC_FORCEINLINE (line 410) | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
function __STATIC_FORCEINLINE (line 423) | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
function __STATIC_FORCEINLINE (line 437) | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
function __STATIC_FORCEINLINE (line 449) | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
function __STATIC_FORCEINLINE (line 464) | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
function __STATIC_FORCEINLINE (line 479) | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
function __STATIC_FORCEINLINE (line 491) | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
function __STATIC_FORCEINLINE (line 543) | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
function __STATIC_FORCEINLINE (line 558) | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
function __STATIC_FORCEINLINE (line 570) | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
function __STATIC_FORCEINLINE (line 583) | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
function __STATIC_FORCEINLINE (line 594) | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
function __STATIC_FORCEINLINE (line 609) | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
function __STATIC_FORCEINLINE (line 624) | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
function __STATIC_FORCEINLINE (line 636) | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
function __STATIC_FORCEINLINE (line 659) | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
function __STATIC_FORCEINLINE (line 681) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
function __STATIC_FORCEINLINE (line 704) | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
function __STATIC_FORCEINLINE (line 725) | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
function __STATIC_FORCEINLINE (line 746) | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
function __STATIC_FORCEINLINE (line 769) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
function __STATIC_FORCEINLINE (line 792) | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
function __STATIC_FORCEINLINE (line 813) | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
function __STATIC_FORCEINLINE (line 833) | __STATIC_FORCEINLINE uint32_t __get_FPSCR(void)
function __STATIC_FORCEINLINE (line 859) | __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)
function __STATIC_FORCEINLINE (line 986) | __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)
function __STATIC_FORCEINLINE (line 1001) | __STATIC_FORCEINLINE int16_t __REVSH(int16_t value)
function __STATIC_FORCEINLINE (line 1021) | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1048) | __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)
function __STATIC_FORCEINLINE (line 1078) | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
function __STATIC_FORCEINLINE (line 1107) | __STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)
function __STATIC_FORCEINLINE (line 1129) | __STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)
function __STATIC_FORCEINLINE (line 1151) | __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)
function __STATIC_FORCEINLINE (line 1168) | __STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *...
function __STATIC_FORCEINLINE (line 1185) | __STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t...
function __STATIC_FORCEINLINE (line 1202) | __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t...
function __STATIC_FORCEINLINE (line 1215) | __STATIC_FORCEINLINE void __CLREX(void)
function __STATIC_FORCEINLINE (line 1268) | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
function __STATIC_FORCEINLINE (line 1283) | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1305) | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1327) | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1342) | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1354) | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1366) | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1382) | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
function __STATIC_FORCEINLINE (line 1407) | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
function __STATIC_FORCEINLINE (line 1437) | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1452) | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1467) | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1482) | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1494) | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1506) | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1518) | __STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)
function __STATIC_FORCEINLINE (line 1533) | __STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)
function __STATIC_FORCEINLINE (line 1548) | __STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)
function __STATIC_FORCEINLINE (line 1565) | __STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *...
function __STATIC_FORCEINLINE (line 1582) | __STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t...
function __STATIC_FORCEINLINE (line 1599) | __STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t ...
function __STATIC_FORCEINLINE (line 1621) | __STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1629) | __STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1637) | __STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1645) | __STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1653) | __STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1661) | __STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1670) | __STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1678) | __STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1686) | __STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1694) | __STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1702) | __STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1710) | __STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1719) | __STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1727) | __STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1735) | __STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1743) | __STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1751) | __STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1759) | __STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1767) | __STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1775) | __STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1783) | __STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1791) | __STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1799) | __STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1807) | __STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1815) | __STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1823) | __STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1831) | __STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1839) | __STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1847) | __STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1855) | __STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1863) | __STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1871) | __STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1879) | __STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1887) | __STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1895) | __STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1903) | __STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1911) | __STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1919) | __STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint3...
function __STATIC_FORCEINLINE (line 1941) | __STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)
function __STATIC_FORCEINLINE (line 1949) | __STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1957) | __STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)
function __STATIC_FORCEINLINE (line 1965) | __STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1973) | __STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1981) | __STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 1989) | __STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint3...
function __STATIC_FORCEINLINE (line 1997) | __STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2005) | __STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2022) | __STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uin...
function __STATIC_FORCEINLINE (line 2039) | __STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 2047) | __STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 2055) | __STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint3...
function __STATIC_FORCEINLINE (line 2063) | __STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2071) | __STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint...
function __STATIC_FORCEINLINE (line 2088) | __STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uin...
function __STATIC_FORCEINLINE (line 2105) | __STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2)
function __STATIC_FORCEINLINE (line 2113) | __STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2)
function __STATIC_FORCEINLINE (line 2121) | __STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2)
function __STATIC_FORCEINLINE (line 2154) | __STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t ...
FILE: panda/board/stm32h7/inc/core_cm7.h
type APSR_Type (line 274) | typedef union
type IPSR_Type (line 313) | typedef union
type xPSR_Type (line 331) | typedef union
type CONTROL_Type (line 386) | typedef union
type NVIC_Type (line 421) | typedef struct
type SCB_Type (line 455) | typedef struct
type SCnSCB_Type (line 921) | typedef struct
type SysTick_Type (line 979) | typedef struct
type DWT_Type (line 1119) | typedef struct
type TPI_Type (line 1269) | typedef struct
type MPU_Type (line 1431) | typedef struct
type FPU_Type (line 1527) | typedef struct
type CoreDebug_Type (line 1639) | typedef struct
function __STATIC_INLINE (line 1871) | __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
function __STATIC_INLINE (line 1890) | __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
function __STATIC_INLINE (line 1902) | __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1921) | __STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1940) | __STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1959) | __STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1978) | __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 1993) | __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
function __STATIC_INLINE (line 2010) | __STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)
function __STATIC_INLINE (line 2032) | __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
function __STATIC_INLINE (line 2054) | __STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
function __STATIC_INLINE (line 2079) | __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, ui...
function __STATIC_INLINE (line 2106) | __STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t Pr...
function __STATIC_INLINE (line 2129) | __STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
function __STATIC_INLINE (line 2145) | __STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
function __NVIC_SystemReset (line 2156) | void __NVIC_SystemReset(void)
function __STATIC_INLINE (line 2199) | __STATIC_INLINE uint32_t SCB_GetFPUType(void)
function __STATIC_FORCEINLINE (line 2241) | __STATIC_FORCEINLINE void SCB_EnableICache (void)
function __STATIC_FORCEINLINE (line 2262) | __STATIC_FORCEINLINE void SCB_DisableICache (void)
function __STATIC_FORCEINLINE (line 2279) | __STATIC_FORCEINLINE void SCB_InvalidateICache (void)
function __STATIC_FORCEINLINE (line 2299) | __STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int3...
function __STATIC_FORCEINLINE (line 2325) | __STATIC_FORCEINLINE void SCB_EnableDCache (void)
function __STATIC_FORCEINLINE (line 2365) | __STATIC_FORCEINLINE void SCB_DisableDCache (void)
function __STATIC_FORCEINLINE (line 2403) | __STATIC_FORCEINLINE void SCB_InvalidateDCache (void)
function __STATIC_FORCEINLINE (line 2438) | __STATIC_FORCEINLINE void SCB_CleanDCache (void)
function __STATIC_FORCEINLINE (line 2473) | __STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void)
function __STATIC_FORCEINLINE (line 2512) | __STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int3...
function __STATIC_FORCEINLINE (line 2542) | __STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32...
function __STATIC_FORCEINLINE (line 2572) | __STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *a...
function __STATIC_INLINE (line 2618) | __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
function __STATIC_INLINE (line 2660) | __STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
function __STATIC_INLINE (line 2681) | __STATIC_INLINE int32_t ITM_ReceiveChar (void)
function __STATIC_INLINE (line 2701) | __STATIC_INLINE int32_t ITM_CheckChar (void)
FILE: panda/board/stm32h7/inc/mpu_armv8.h
type ARM_MPU_Region_t (line 122) | typedef struct {
function __STATIC_INLINE (line 130) | __STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control)
function __STATIC_INLINE (line 142) | __STATIC_INLINE void ARM_MPU_Disable(void)
function __STATIC_INLINE (line 155) | __STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control)
function __STATIC_INLINE (line 167) | __STATIC_INLINE void ARM_MPU_Disable_NS(void)
function __STATIC_INLINE (line 182) | __STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, ui...
function __STATIC_INLINE (line 199) | __STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr)
function __STATIC_INLINE (line 209) | __STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr)
function __STATIC_INLINE (line 219) | __STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr)
function __STATIC_INLINE (line 228) | __STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr)
function __STATIC_INLINE (line 237) | __STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr)
function __STATIC_INLINE (line 249) | __STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, ui...
function __STATIC_INLINE (line 261) | __STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint...
function __STATIC_INLINE (line 272) | __STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, u...
function __STATIC_INLINE (line 283) | __STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const...
function __STATIC_INLINE (line 298) | __STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU...
function __STATIC_INLINE (line 328) | __STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* ...
function __STATIC_INLINE (line 339) | __STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t cons...
FILE: panda/board/stm32h7/inc/stm32h725xx.h
type IRQn_Type (line 49) | typedef enum
type ADC_TypeDef (line 246) | typedef struct
type ADC_Common_TypeDef (line 293) | typedef struct
type VREFBUF_TypeDef (line 308) | typedef struct
type FDCAN_GlobalTypeDef (line 319) | typedef struct
type TTCAN_TypeDef (line 380) | typedef struct
type FDCAN_ClockCalibrationUnit_TypeDef (line 407) | typedef struct
type CEC_TypeDef (line 422) | typedef struct
type CORDIC_TypeDef (line 435) | typedef struct
type CRC_TypeDef (line 446) | typedef struct
type CRS_TypeDef (line 460) | typedef struct
type DAC_TypeDef (line 473) | typedef struct
type DFSDM_Filter_TypeDef (line 500) | typedef struct
type DFSDM_Channel_TypeDef (line 522) | typedef struct
type DBGMCU_TypeDef (line 535) | typedef struct
type DCMI_TypeDef (line 565) | typedef struct
type PSSI_TypeDef (line 584) | typedef struct
type DMA_Stream_TypeDef (line 605) | typedef struct
type DMA_TypeDef (line 615) | typedef struct
type BDMA_Channel_TypeDef (line 623) | typedef struct
type BDMA_TypeDef (line 632) | typedef struct
type DMAMUX_Channel_TypeDef (line 638) | typedef struct
type DMAMUX_ChannelStatus_TypeDef (line 643) | typedef struct
type DMAMUX_RequestGen_TypeDef (line 649) | typedef struct
type DMAMUX_RequestGenStatus_TypeDef (line 654) | typedef struct
type MDMA_TypeDef (line 663) | typedef struct
type MDMA_Channel_TypeDef (line 668) | typedef struct
type DMA2D_TypeDef (line 690) | typedef struct
type ETH_TypeDef (line 721) | typedef struct
type EXTI_TypeDef (line 895) | typedef struct
type EXTI_Core_TypeDef (line 940) | typedef struct
type FLASH_TypeDef (line 960) | typedef struct
type FMAC_TypeDef (line 994) | typedef struct
type FMC_Bank1_TypeDef (line 1010) | typedef struct
type FMC_Bank1E_TypeDef (line 1019) | typedef struct
type FMC_Bank2_TypeDef (line 1028) | typedef struct
type FMC_Bank3_TypeDef (line 1042) | typedef struct
type FMC_Bank5_6_TypeDef (line 1057) | typedef struct
type GPIO_TypeDef (line 1070) | typedef struct
type OPAMP_TypeDef (line 1087) | typedef struct
type SYSCFG_TypeDef (line 1098) | typedef struct
type I2C_TypeDef (line 1137) | typedef struct
type IWDG_TypeDef (line 1156) | typedef struct
type LTDC_TypeDef (line 1170) | typedef struct
type LTDC_Layer_TypeDef (line 1195) | typedef struct
type PWR_TypeDef (line 1218) | typedef struct
type RCC_TypeDef (line 1237) | typedef struct
type RTC_TypeDef (line 1311) | typedef struct
type SAI_TypeDef (line 1371) | typedef struct
type SAI_Block_TypeDef (line 1379) | typedef struct
type SPDIFRX_TypeDef (line 1395) | typedef struct
type SDMMC_TypeDef (line 1412) | typedef struct
type DLYB_TypeDef (line 1447) | typedef struct
type HSEM_TypeDef (line 1457) | typedef struct
type HSEM_Common_TypeDef (line 1471) | typedef struct
type SPI_TypeDef (line 1483) | typedef struct
type DTS_TypeDef (line 1508) | typedef struct
type TIM_TypeDef (line 1529) | typedef struct
type LPTIM_TypeDef (line 1563) | typedef struct
type COMPOPT_TypeDef (line 1580) | typedef struct
type COMP_TypeDef (line 1587) | typedef struct
type COMP_Common_TypeDef (line 1592) | typedef struct
type USART_TypeDef (line 1600) | typedef struct
type SWPMI_TypeDef (line 1619) | typedef struct
type WWDG_TypeDef (line 1637) | typedef struct
type RAMECC_MonitorTypeDef (line 1648) | typedef struct
type RAMECC_TypeDef (line 1658) | typedef struct
type CRYP_TypeDef (line 1671) | typedef struct
type HASH_TypeDef (line 1715) | typedef struct
type HASH_DIGEST_TypeDef (line 1731) | typedef struct
type RNG_TypeDef (line 1741) | typedef struct
type MDIOS_TypeDef (line 1754) | typedef struct
type USB_OTG_GlobalTypeDef (line 1834) | typedef struct
type USB_OTG_DeviceTypeDef (line 1869) | typedef struct
type USB_OTG_INEndpointTypeDef (line 1897) | typedef struct
type USB_OTG_OUTEndpointTypeDef (line 1913) | typedef struct
type USB_OTG_HostTypeDef (line 1928) | typedef struct
type USB_OTG_HostChannelTypeDef (line 1942) | typedef struct
type OCTOSPI_TypeDef (line 1960) | typedef struct
type OCTOSPIM_TypeDef (line 2025) | typedef struct
type OTFDEC_Region_TypeDef (line 2038) | typedef struct
type OTFDEC_TypeDef (line 2051) | typedef struct
type GPV_TypeDef (line 2073) | typedef struct
FILE: panda/board/stm32h7/inc/stm32h735xx.h
type IRQn_Type (line 49) | typedef enum
type ADC_TypeDef (line 246) | typedef struct
type ADC_Common_TypeDef (line 293) | typedef struct
type VREFBUF_TypeDef (line 308) | typedef struct
type FDCAN_GlobalTypeDef (line 319) | typedef struct
type TTCAN_TypeDef (line 380) | typedef struct
type FDCAN_ClockCalibrationUnit_TypeDef (line 407) | typedef struct
type CEC_TypeDef (line 422) | typedef struct
type CORDIC_TypeDef (line 435) | typedef struct
type CRC_TypeDef (line 446) | typedef struct
type CRS_TypeDef (line 460) | typedef struct
type DAC_TypeDef (line 473) | typedef struct
type DFSDM_Filter_TypeDef (line 500) | typedef struct
type DFSDM_Channel_TypeDef (line 522) | typedef struct
type DBGMCU_TypeDef (line 535) | typedef struct
type DCMI_TypeDef (line 565) | typedef struct
type PSSI_TypeDef (line 584) | typedef struct
type DMA_Stream_TypeDef (line 605) | typedef struct
type DMA_TypeDef (line 615) | typedef struct
type BDMA_Channel_TypeDef (line 623) | typedef struct
type BDMA_TypeDef (line 632) | typedef struct
type DMAMUX_Channel_TypeDef (line 638) | typedef struct
type DMAMUX_ChannelStatus_TypeDef (line 643) | typedef struct
type DMAMUX_RequestGen_TypeDef (line 649) | typedef struct
type DMAMUX_RequestGenStatus_TypeDef (line 654) | typedef struct
type MDMA_TypeDef (line 663) | typedef struct
type MDMA_Channel_TypeDef (line 668) | typedef struct
type DMA2D_TypeDef (line 690) | typedef struct
type ETH_TypeDef (line 721) | typedef struct
type EXTI_TypeDef (line 895) | typedef struct
type EXTI_Core_TypeDef (line 940) | typedef struct
type FLASH_TypeDef (line 960) | typedef struct
type FMAC_TypeDef (line 994) | typedef struct
type FMC_Bank1_TypeDef (line 1010) | typedef struct
type FMC_Bank1E_TypeDef (line 1019) | typedef struct
type FMC_Bank2_TypeDef (line 1028) | typedef struct
type FMC_Bank3_TypeDef (line 1042) | typedef struct
type FMC_Bank5_6_TypeDef (line 1057) | typedef struct
type GPIO_TypeDef (line 1070) | typedef struct
type OPAMP_TypeDef (line 1087) | typedef struct
type SYSCFG_TypeDef (line 1098) | typedef struct
type I2C_TypeDef (line 1137) | typedef struct
type IWDG_TypeDef (line 1156) | typedef struct
type LTDC_TypeDef (line 1170) | typedef struct
type LTDC_Layer_TypeDef (line 1195) | typedef struct
type PWR_TypeDef (line 1218) | typedef struct
type RCC_TypeDef (line 1237) | typedef struct
type RTC_TypeDef (line 1311) | typedef struct
type SAI_TypeDef (line 1371) | typedef struct
type SAI_Block_TypeDef (line 1379) | typedef struct
type SPDIFRX_TypeDef (line 1395) | typedef struct
type SDMMC_TypeDef (line 1412) | typedef struct
type DLYB_TypeDef (line 1447) | typedef struct
type HSEM_TypeDef (line 1457) | typedef struct
type HSEM_Common_TypeDef (line 1471) | typedef struct
type SPI_TypeDef (line 1483) | typedef struct
type DTS_TypeDef (line 1508) | typedef struct
type TIM_TypeDef (line 1529) | typedef struct
type LPTIM_TypeDef (line 1563) | typedef struct
type COMPOPT_TypeDef (line 1580) | typedef struct
type COMP_TypeDef (line 1587) | typedef struct
type COMP_Common_TypeDef (line 1592) | typedef struct
type USART_TypeDef (line 1600) | typedef struct
type SWPMI_TypeDef (line 1619) | typedef struct
type WWDG_TypeDef (line 1637) | typedef struct
type RAMECC_MonitorTypeDef (line 1648) | typedef struct
type RAMECC_TypeDef (line 1658) | typedef struct
type CRYP_TypeDef (line 1671) | typedef struct
type HASH_TypeDef (line 1715) | typedef struct
type HASH_DIGEST_TypeDef (line 1731) | typedef struct
type RNG_TypeDef (line 1741) | typedef struct
type MDIOS_TypeDef (line 1754) | typedef struct
type USB_OTG_GlobalTypeDef (line 1834) | typedef struct
type USB_OTG_DeviceTypeDef (line 1869) | typedef struct
type USB_OTG_INEndpointTypeDef (line 1897) | typedef struct
type USB_OTG_OUTEndpointTypeDef (line 1913) | typedef struct
type USB_OTG_HostTypeDef (line 1928) | typedef struct
type USB_OTG_HostChannelTypeDef (line 1942) | typedef struct
type OCTOSPI_TypeDef (line 1960) | typedef struct
type OCTOSPIM_TypeDef (line 2025) | typedef struct
type OTFDEC_Region_TypeDef (line 2038) | typedef struct
type OTFDEC_TypeDef (line 2051) | typedef struct
type GPV_TypeDef (line 2073) | typedef struct
FILE: panda/board/stm32h7/inc/stm32h7xx.h
type FlagStatus (line 174) | typedef enum
type FunctionalState (line 180) | typedef enum
type ErrorStatus (line 187) | typedef enum
FILE: panda/board/stm32h7/inc/stm32h7xx_hal_def.h
type HAL_StatusTypeDef (line 40) | typedef enum
type HAL_LockTypeDef (line 51) | typedef enum
FILE: panda/board/stm32h7/interrupt_handlers.h
function WWDG_IRQHandler (line 4) | void WWDG_IRQHandler(void) {handle_interrupt(WWDG_IRQn);}
function PVD_AVD_IRQHandler (line 5) | void PVD_AVD_IRQHandler(void) {handle_interrupt(PVD_AVD_IRQn);}
function TAMP_STAMP_IRQHandler (line 6) | void TAMP_STAMP_IRQHandler(void) {handle_interrupt(TAMP_STAMP_IRQn);}
function RTC_WKUP_IRQHandler (line 7) | void RTC_WKUP_IRQHandler(void) {handle_interrupt(RTC_WKUP_IRQn);}
function FLASH_IRQHandler (line 8) | void FLASH_IRQHandler(void) {handle_interrupt(FLASH_IRQn);}
function RCC_IRQHandler (line 9) | void RCC_IRQHandler(void) {handle_interrupt(RCC_IRQn);}
function EXTI0_IRQHandler (line 10) | void EXTI0_IRQHandler(void) {handle_interrupt(EXTI0_IRQn);}
function EXTI1_IRQHandler (line 11) | void EXTI1_IRQHandler(void) {handle_interrupt(EXTI1_IRQn);}
function EXTI2_IRQHandler (line 12) | void EXTI2_IRQHandler(void) {handle_interrupt(EXTI2_IRQn);}
function EXTI3_IRQHandler (line 13) | void EXTI3_IRQHandler(void) {handle_interrupt(EXTI3_IRQn);}
function EXTI4_IRQHandler (line 14) | void EXTI4_IRQHandler(void) {handle_interrupt(EXTI4_IRQn);}
function DMA1_Stream0_IRQHandler (line 15) | void DMA1_Stream0_IRQHandler(void) {handle_interrupt(DMA1_Stream0_IRQn);}
function DMA1_Stream1_IRQHandler (line 16) | void DMA1_Stream1_IRQHandler(void) {handle_interrupt(DMA1_Stream1_IRQn);}
function DMA1_Stream2_IRQHandler (line 17) | void DMA1_Stream2_IRQHandler(void) {handle_interrupt(DMA1_Stream2_IRQn);}
function DMA1_Stream3_IRQHandler (line 18) | void DMA1_Stream3_IRQHandler(void) {handle_interrupt(DMA1_Stream3_IRQn);}
function DMA1_Stream4_IRQHandler (line 19) | void DMA1_Stream4_IRQHandler(void) {handle_interrupt(DMA1_Stream4_IRQn);}
function DMA1_Stream5_IRQHandler (line 20) | void DMA1_Stream5_IRQHandler(void) {handle_interrupt(DMA1_Stream5_IRQn);}
function DMA1_Stream6_IRQHandler (line 21) | void DMA1_Stream6_IRQHandler(void) {handle_interrupt(DMA1_Stream6_IRQn);}
function ADC_IRQHandler (line 22) | void ADC_IRQHandler(void) {handle_interrupt(ADC_IRQn);}
function EXTI9_5_IRQHandler (line 23) | void EXTI9_5_IRQHandler(void) {handle_interrupt(EXTI9_5_IRQn);}
function TIM1_BRK_IRQHandler (line 24) | void TIM1_BRK_IRQHandler(void) {handle_interrupt(TIM1_BRK_IRQn);}
function TIM1_UP_TIM10_IRQHandler (line 25) | void TIM1_UP_TIM10_IRQHandler(void) {handle_interrupt(TIM1_UP_TIM10_IRQn);}
function TIM1_TRG_COM_IRQHandler (line 26) | void TIM1_TRG_COM_IRQHandler(void) {handle_interrupt(TIM1_TRG_COM_IRQn);}
function TIM1_CC_IRQHandler (line 27) | void TIM1_CC_IRQHandler(void) {handle_interrupt(TIM1_CC_IRQn);}
function TIM2_IRQHandler (line 28) | void TIM2_IRQHandler(void) {handle_interrupt(TIM2_IRQn);}
function TIM3_IRQHandler (line 29) | void TIM3_IRQHandler(void) {handle_interrupt(TIM3_IRQn);}
function TIM4_IRQHandler (line 30) | void TIM4_IRQHandler(void) {handle_interrupt(TIM4_IRQn);}
function I2C1_EV_IRQHandler (line 31) | void I2C1_EV_IRQHandler(void) {handle_interrupt(I2C1_EV_IRQn);}
function I2C1_ER_IRQHandler (line 32) | void I2C1_ER_IRQHandler(void) {handle_interrupt(I2C1_ER_IRQn);}
function I2C2_EV_IRQHandler (line 33) | void I2C2_EV_IRQHandler(void) {handle_interrupt(I2C2_EV_IRQn);}
function I2C2_ER_IRQHandler (line 34) | void I2C2_ER_IRQHandler(void) {handle_interrupt(I2C2_ER_IRQn);}
function SPI1_IRQHandler (line 35) | void SPI1_IRQHandler(void) {handle_interrupt(SPI1_IRQn);}
function SPI2_IRQHandler (line 36) | void SPI2_IRQHandler(void) {handle_interrupt(SPI2_IRQn);}
function USART1_IRQHandler (line 37) | void USART1_IRQHandler(void) {handle_interrupt(USART1_IRQn);}
function USART2_IRQHandler (line 38) | void USART2_IRQHandler(void) {handle_interrupt(USART2_IRQn);}
function USART3_IRQHandler (line 39) | void USART3_IRQHandler(void) {handle_interrupt(USART3_IRQn);}
function EXTI15_10_IRQHandler (line 40) | void EXTI15_10_IRQHandler(void) {handle_interrupt(EXTI15_10_IRQn);}
function RTC_Alarm_IRQHandler (line 41) | void RTC_Alarm_IRQHandler(void) {handle_interrupt(RTC_Alarm_IRQn);}
function TIM8_BRK_TIM12_IRQHandler (line 42) | void TIM8_BRK_TIM12_IRQHandler(void) {handle_interrupt(TIM8_BRK_TIM12_IR...
function TIM8_UP_TIM13_IRQHandler (line 43) | void TIM8_UP_TIM13_IRQHandler(void) {handle_interrupt(TIM8_UP_TIM13_IRQn);}
function TIM8_TRG_COM_TIM14_IRQHandler (line 44) | void TIM8_TRG_COM_TIM14_IRQHandler(void) {handle_interrupt(TIM8_TRG_COM_...
function TIM8_CC_IRQHandler (line 45) | void TIM8_CC_IRQHandler(void) {handle_interrupt(TIM8_CC_IRQn);}
function DMA1_Stream7_IRQHandler (line 46) | void DMA1_Stream7_IRQHandler(void) {handle_interrupt(DMA1_Stream7_IRQn);}
function TIM5_IRQHandler (line 47) | void TIM5_IRQHandler(void) {handle_interrupt(TIM5_IRQn);}
function SPI3_IRQHandler (line 48) | void SPI3_IRQHandler(void) {handle_interrupt(SPI3_IRQn);}
function UART4_IRQHandler (line 49) | void UART4_IRQHandler(void) {handle_interrupt(UART4_IRQn);}
function UART5_IRQHandler (line 50) | void UART5_IRQHandler(void) {handle_interrupt(UART5_IRQn);}
function TIM6_DAC_IRQHandler (line 51) | void TIM6_DAC_IRQHandler(void) {handle_interrupt(TIM6_DAC_IRQn);}
function TIM7_IRQHandler (line 52) | void TIM7_IRQHandler(void) {handle_interrupt(TIM7_IRQn);}
function DMA2_Stream0_IRQHandler (line 53) | void DMA2_Stream0_IRQHandler(void) {handle_interrupt(DMA2_Stream0_IRQn);}
function DMA2_Stream1_IRQHandler (line 54) | void DMA2_Stream1_IRQHandler(void) {handle_interrupt(DMA2_Stream1_IRQn);}
function DMA2_Stream2_IRQHandler (line 55) | void DMA2_Stream2_IRQHandler(void) {handle_interrupt(DMA2_Stream2_IRQn);}
function DMA2_Stream3_IRQHandler (line 56) | void DMA2_Stream3_IRQHandler(void) {handle_interrupt(DMA2_Stream3_IRQn);}
function DMA2_Stream4_IRQHandler (line 57) | void DMA2_Stream4_IRQHandler(void) {handle_interrupt(DMA2_Stream4_IRQn);}
function DMA2_Stream5_IRQHandler (line 58) | void DMA2_Stream5_IRQHandler(void) {handle_interrupt(DMA2_Stream5_IRQn);}
function DMA2_Stream6_IRQHandler (line 59) | void DMA2_Stream6_IRQHandler(void) {handle_interrupt(DMA2_Stream6_IRQn);}
function DMA2_Stream7_IRQHandler (line 60) | void DMA2_Stream7_IRQHandler(void) {handle_interrupt(DMA2_Stream7_IRQn);}
function USART6_IRQHandler (line 61) | void USART6_IRQHandler(void) {handle_interrupt(USART6_IRQn);}
function I2C3_EV_IRQHandler (line 62) | void I2C3_EV_IRQHandler(void) {handle_interrupt(I2C3_EV_IRQn);}
function I2C3_ER_IRQHandler (line 63) | void I2C3_ER_IRQHandler(void) {handle_interrupt(I2C3_ER_IRQn);}
function FDCAN1_IT0_IRQHandler (line 64) | void FDCAN1_IT0_IRQHandler(void) {handle_interrupt(FDCAN1_IT0_IRQn);}
function FDCAN1_IT1_IRQHandler (line 65) | void FDCAN1_IT1_IRQHandler(void) {handle_interrupt(FDCAN1_IT1_IRQn);}
function FDCAN2_IT0_IRQHandler (line 66) | void FDCAN2_IT0_IRQHandler(void) {handle_interrupt(FDCAN2_IT0_IRQn);}
function FDCAN2_IT1_IRQHandler (line 67) | void FDCAN2_IT1_IRQHandler(void) {handle_interrupt(FDCAN2_IT1_IRQn);}
function FDCAN3_IT0_IRQHandler (line 68) | void FDCAN3_IT0_IRQHandler(void) {handle_interrupt(FDCAN3_IT0_IRQn);}
function FDCAN3_IT1_IRQHandler (line 69) | void FDCAN3_IT1_IRQHandler(void) {handle_interrupt(FDCAN3_IT1_IRQn);}
function FDCAN_CAL_IRQHandler (line 70) | void FDCAN_CAL_IRQHandler(void) {handle_interrupt(FDCAN_CAL_IRQn);}
function OTG_HS_EP1_OUT_IRQHandler (line 71) | void OTG_HS_EP1_OUT_IRQHandler(void) {handle_interrupt(OTG_HS_EP1_OUT_IR...
function OTG_HS_EP1_IN_IRQHandler (line 72) | void OTG_HS_EP1_IN_IRQHandler(void) {handle_interrupt(OTG_HS_EP1_IN_IRQn);}
function OTG_HS_WKUP_IRQHandler (line 73) | void OTG_HS_WKUP_IRQHandler(void) {handle_interrupt(OTG_HS_WKUP_IRQn);}
function OTG_HS_IRQHandler (line 74) | void OTG_HS_IRQHandler(void) {handle_interrupt(OTG_HS_IRQn);}
FILE: panda/board/stm32h7/lladc.h
function adc_init (line 5) | void adc_init(void) {
function adc_get (line 20) | uint32_t adc_get(unsigned int channel) {
function adc_get_voltage (line 39) | uint32_t adc_get_voltage(void) {
FILE: panda/board/stm32h7/llfan.h
function EXTI2_IRQ_Handler (line 1) | void EXTI2_IRQ_Handler(void) { }
function fan_init (line 2) | void fan_init(void){ }
FILE: panda/board/stm32h7/llfdcan.h
type CAN_FIFOMailBox_TypeDef (line 37) | typedef struct {
function fdcan_request_init (line 46) | bool fdcan_request_init(FDCAN_GlobalTypeDef *CANx) {
function fdcan_exit_init (line 68) | bool fdcan_exit_init(FDCAN_GlobalTypeDef *CANx) {
function llcan_set_speed (line 86) | bool llcan_set_speed(FDCAN_GlobalTypeDef *CANx, uint32_t speed, uint32_t...
function llcan_init (line 123) | bool llcan_init(FDCAN_GlobalTypeDef *CANx) {
function llcan_clear_send (line 207) | void llcan_clear_send(FDCAN_GlobalTypeDef *CANx) {
FILE: panda/board/stm32h7/llflash.h
function flash_is_locked (line 1) | bool flash_is_locked(void) {
function flash_unlock (line 5) | void flash_unlock(void) {
function flash_erase_sector (line 10) | bool flash_erase_sector(uint8_t sector, bool unlocked) {
function flash_write_word (line 21) | void flash_write_word(void *prog_ptr, uint32_t data) {
function flush_write_buffer (line 28) | void flush_write_buffer(void) {
FILE: panda/board/stm32h7/llrtc.h
function enable_bdomain_protection (line 3) | void enable_bdomain_protection(void) {
function disable_bdomain_protection (line 7) | void disable_bdomain_protection(void) {
FILE: panda/board/stm32h7/lluart.h
function uart_init (line 1) | void uart_init(uart_ring *q, int baud) { UNUSED(q); UNUSED(baud); }
function uart_set_baud (line 2) | void uart_set_baud(USART_TypeDef *u, unsigned int baud) { UNUSED(u); UNU...
function dma_pointer_handler (line 3) | void dma_pointer_handler(uart_ring *q, uint32_t dma_ndtr) { UNUSED(q); U...
function uart_rx_ring (line 4) | void uart_rx_ring(uart_ring *q) { UNUSED(q); }
function uart_tx_ring (line 5) | void uart_tx_ring(uart_ring *q) { UNUSED(q); }
FILE: panda/board/stm32h7/llusb.h
type USB_OTG_HostPortTypeDef (line 1) | typedef struct
function OTG_HS_IRQ_Handler (line 24) | void OTG_HS_IRQ_Handler(void) {
function usb_init (line 30) | void usb_init(void) {
FILE: panda/board/stm32h7/peripherals.h
function gpio_usb_init (line 1) | void gpio_usb_init(void) {
function gpio_usart2_init (line 8) | void gpio_usart2_init(void) {
function common_init_gpio (line 15) | void common_init_gpio(void) {
function flasher_peripherals_init (line 92) | void flasher_peripherals_init(void) {
function peripherals_init (line 97) | void peripherals_init(void) {
function enable_interrupt_timer (line 121) | void enable_interrupt_timer(void) {
FILE: panda/board/stm32h7/stm32h7_config.h
function early_gpio_float (line 70) | void early_gpio_float(void) {
FILE: panda/board/tests/test_rsa.c
function main (line 15) | int main() {
FILE: panda/crypto/hash-internal.h
type HASH_CTX (line 36) | struct HASH_CTX
type HASH_VTAB (line 38) | typedef struct HASH_VTAB {
type HASH_CTX (line 46) | typedef struct HASH_CTX {
FILE: panda/crypto/rsa.c
function subM (line 32) | static void subM(const RSAPublicKey* key,
function geM (line 44) | static int geM(const RSAPublicKey* key,
function montMulAdd (line 56) | static void montMulAdd(const RSAPublicKey* key,
function montMul (line 81) | static void montMul(const RSAPublicKey* key,
function modpow (line 96) | static void modpow(const RSAPublicKey* key,
function RSA_verify (line 222) | int RSA_verify(const RSAPublicKey *key,
FILE: panda/crypto/rsa.h
type RSAPublicKey (line 40) | typedef struct RSAPublicKey {
FILE: panda/crypto/sha.c
function SHA1_Transform (line 36) | static void SHA1_Transform(SHA_CTX* ctx) {
function SHA_init (line 94) | void SHA_init(SHA_CTX* ctx) {
function SHA_update (line 105) | void SHA_update(SHA_CTX* ctx, const void* data, int len) {
FILE: panda/crypto/sha.h
type HASH_CTX (line 35) | typedef HASH_CTX SHA_CTX;
FILE: panda/python/__init__.py
function parse_can_buffer (line 24) | def parse_can_buffer(dat):
class PandaWifiStreaming (line 40) | class PandaWifiStreaming(object):
method __init__ (line 41) | def __init__(self, ip="192.168.0.10", port=1338):
method kick (line 48) | def kick(self):
method can_recv (line 52) | def can_recv(self):
class WifiHandle (line 66) | class WifiHandle(object):
method __init__ (line 67) | def __init__(self, ip="192.168.0.10", port=1337):
method __recv (line 70) | def __recv(self):
method controlWrite (line 75) | def controlWrite(self, request_type, request, value, index, data, time...
method controlRead (line 79) | def controlRead(self, request_type, request, value, index, length, tim...
method bulkWrite (line 83) | def bulkWrite(self, endpoint, data, timeout=0):
method bulkRead (line 89) | def bulkRead(self, endpoint, length, timeout=0):
method close (line 93) | def close(self):
class Panda (line 98) | class Panda(object):
method __init__ (line 154) | def __init__(self, serial=None, claim=True):
method close (line 160) | def close(self):
method connect (line 164) | def connect(self, claim=True, wait=False):
method reset (line 205) | def reset(self, enter_bootstub=False, enter_bootloader=False):
method reconnect (line 220) | def reconnect(self):
method flash_static (line 242) | def flash_static(handle, code):
method flash (line 269) | def flash(self, fn=DEFAULT_FW_FN, code=None, reconnect=True):
method recover (line 291) | def recover(self, timeout=None):
method flash_ota_st (line 310) | def flash_ota_st():
method flash_ota_wifi (line 316) | def flash_ota_wifi(release=False):
method list (line 323) | def list():
method call_control_api (line 339) | def call_control_api(self, msg):
method health (line 344) | def health(self):
method enter_bootloader (line 371) | def enter_bootloader(self):
method get_version (line 377) | def get_version(self):
method get_signature_from_firmware (line 381) | def get_signature_from_firmware(fn):
method get_signature (line 386) | def get_signature(self):
method get_type (line 391) | def get_type(self):
method is_white (line 394) | def is_white(self):
method is_grey (line 397) | def is_grey(self):
method is_black (line 400) | def is_black(self):
method is_pedal (line 403) | def is_pedal(self):
method is_uno (line 406) | def is_uno(self):
method is_dos (line 409) | def is_dos(self):
method is_red (line 412) | def is_red(self):
method get_mcu_type (line 415) | def get_mcu_type(self):
method has_obd (line 425) | def has_obd(self):
method has_canfd (line 428) | def has_canfd(self):
method get_serial (line 431) | def get_serial(self):
method get_secret (line 437) | def get_secret(self):
method set_usb_power (line 442) | def set_usb_power(self, on):
method set_power_save (line 445) | def set_power_save(self, power_save_enabled=0):
method set_esp_power (line 448) | def set_esp_power(self, on):
method esp_reset (line 451) | def esp_reset(self, bootmode=0):
method set_safety_mode (line 455) | def set_safety_mode(self, mode=SAFETY_SILENT, disable_heartbeat=True):
method set_can_forwarding (line 460) | def set_can_forwarding(self, from_bus, to_bus):
method set_gmlan (line 464) | def set_gmlan(self, bus=2):
method set_obd (line 471) | def set_obd(self, obd):
method set_can_loopback (line 475) | def set_can_loopback(self, enable):
method set_can_enable (line 479) | def set_can_enable(self, bus_num, enable):
method set_can_speed_kbps (line 483) | def set_can_speed_kbps(self, bus, speed):
method set_can_data_speed_kbps (line 486) | def set_can_data_speed_kbps(self, bus, speed):
method set_uart_baud (line 489) | def set_uart_baud(self, uart, rate):
method set_uart_parity (line 492) | def set_uart_parity(self, uart, parity):
method set_uart_callback (line 496) | def set_uart_callback(self, uart, install):
method can_send_many (line 506) | def can_send_many(self, arr, timeout=CAN_SEND_TIMEOUT_MS):
method can_send (line 533) | def can_send(self, addr, dat, bus, timeout=CAN_SEND_TIMEOUT_MS):
method can_recv (line 536) | def can_recv(self):
method can_clear (line 547) | def can_clear(self, bus):
method isotp_send (line 560) | def isotp_send(self, addr, dat, bus, recvaddr=None, subaddr=None):
method isotp_recv (line 563) | def isotp_recv(self, addr, bus=0, sendaddr=None, subaddr=None):
method serial_read (line 568) | def serial_read(self, port_number):
method serial_write (line 577) | def serial_write(self, port_number, ln):
method serial_clear (line 583) | def serial_clear(self, port_number):
method kline_wakeup (line 596) | def kline_wakeup(self, k=True, l=True):
method kline_5baud (line 604) | def kline_5baud(self, addr, k=True, l=True):
method kline_drain (line 612) | def kline_drain(self, bus=2):
method kline_ll_recv (line 624) | def kline_ll_recv(self, cnt, bus=2):
method kline_send (line 633) | def kline_send(self, x, bus=2, checksum=True):
method kline_recv (line 649) | def kline_recv(self, bus=2, header_len=4):
method send_heartbeat (line 656) | def send_heartbeat(self):
method set_heartbeat_disabled (line 661) | def set_heartbeat_disabled(self):
method set_datetime (line 665) | def set_datetime(self, dt):
method get_datetime (line 674) | def get_datetime(self):
method set_ir_power (line 680) | def set_ir_power(self, percentage):
method set_fan_power (line 684) | def set_fan_power(self, percentage):
method get_fan_rpm (line 687) | def get_fan_rpm(self):
method set_phone_power (line 693) | def set_phone_power(self, enabled):
method set_clock_source_mode (line 697) | def set_clock_source_mode(self, mode):
method set_siren (line 701) | def set_siren(self, enabled):
method set_green_led (line 705) | def set_green_led(self, enabled):
FILE: panda/python/dfu.py
class PandaDFU (line 18) | class PandaDFU(object):
method __init__ (line 19) | def __init__(self, dfu_serial):
method list (line 34) | def list():
method st_serial_to_dfu_serial (line 49) | def st_serial_to_dfu_serial(st, mcu_type=MCU_TYPE_F4):
method get_mcu_type (line 59) | def get_mcu_type(self, dev):
method status (line 62) | def status(self):
method clear_status (line 68) | def clear_status(self):
method erase (line 78) | def erase(self, address):
method program (line 82) | def program(self, address, dat, block_size=None):
method program_bootstub (line 98) | def program_bootstub(self, code_bootstub):
method recover (line 109) | def recover(self):
method reset (line 117) | def reset(self):
FILE: panda/python/flash_release.py
function flash_release (line 9) | def flash_release(path=None, st_serial=None):
FILE: panda/python/isotp.py
function msg (line 6) | def msg(x):
function recv (line 16) | def recv(panda, cnt, addr, nbus):
function isotp_recv_subaddr (line 32) | def isotp_recv_subaddr(panda, addr, bus, sendaddr, subaddr):
function isotp_send (line 65) | def isotp_send(panda, x, addr, bus=0, recvaddr=None, subaddr=None, rate=...
function isotp_recv (line 107) | def isotp_recv(panda, addr, bus=0, sendaddr=None, subaddr=None):
FILE: panda/python/serial.py
class PandaSerial (line 2) | class PandaSerial(object):
method __init__ (line 3) | def __init__(self, panda, port, baud):
method read (line 11) | def read(self, l=1): # noqa: E741
method write (line 19) | def write(self, dat):
method close (line 22) | def close(self):
method flush (line 25) | def flush(self):
method baudrate (line 29) | def baudrate(self):
method baudrate (line 33) | def baudrate(self, value):
FILE: panda/python/uds.py
class SERVICE_TYPE (line 8) | class SERVICE_TYPE(IntEnum):
class SESSION_TYPE (line 35) | class SESSION_TYPE(IntEnum):
class RESET_TYPE (line 41) | class RESET_TYPE(IntEnum):
class ACCESS_TYPE (line 48) | class ACCESS_TYPE(IntEnum):
class CONTROL_TYPE (line 52) | class CONTROL_TYPE(IntEnum):
class MESSAGE_TYPE (line 58) | class MESSAGE_TYPE(IntEnum):
class TIMING_PARAMETER_TYPE (line 63) | class TIMING_PARAMETER_TYPE(IntEnum):
class DTC_SETTING_TYPE (line 69) | class DTC_SETTING_TYPE(IntEnum):
class RESPONSE_EVENT_TYPE (line 73) | class RESPONSE_EVENT_TYPE(IntEnum):
class LINK_CONTROL_TYPE (line 83) | class LINK_CONTROL_TYPE(IntEnum):
class BAUD_RATE_TYPE (line 88) | class BAUD_RATE_TYPE(IntEnum):
class DATA_IDENTIFIER_TYPE (line 99) | class DATA_IDENTIFIER_TYPE(IntEnum):
class TRANSMISSION_MODE_TYPE (line 132) | class TRANSMISSION_MODE_TYPE(IntEnum):
class DYNAMIC_DEFINITION_TYPE (line 138) | class DYNAMIC_DEFINITION_TYPE(IntEnum):
class DynamicSourceDefinition (line 143) | class DynamicSourceDefinition(NamedTuple):
class DTC_GROUP_TYPE (line 149) | class DTC_GROUP_TYPE(IntEnum):
class DTC_REPORT_TYPE (line 153) | class DTC_REPORT_TYPE(IntEnum):
class DTC_STATUS_MASK_TYPE (line 176) | class DTC_STATUS_MASK_TYPE(IntEnum):
class DTC_SEVERITY_MASK_TYPE (line 187) | class DTC_SEVERITY_MASK_TYPE(IntEnum):
class CONTROL_PARAMETER_TYPE (line 193) | class CONTROL_PARAMETER_TYPE(IntEnum):
class ROUTINE_CONTROL_TYPE (line 199) | class ROUTINE_CONTROL_TYPE(IntEnum):
class ROUTINE_IDENTIFIER_TYPE (line 204) | class ROUTINE_IDENTIFIER_TYPE(IntEnum):
class MessageTimeoutError (line 209) | class MessageTimeoutError(Exception):
class NegativeResponseError (line 212) | class NegativeResponseError(Exception):
method __init__ (line 213) | def __init__(self, message, service_id, error_code):
method __str__ (line 219) | def __str__(self):
class InvalidServiceIdError (line 222) | class InvalidServiceIdError(Exception):
class InvalidSubFunctioneError (line 225) | class InvalidSubFunctioneError(Exception):
class CanClient (line 273) | class CanClient():
method __init__ (line 274) | def __init__(self, can_send: Callable[[int, bytes, int], None], can_re...
method _recv_filter (line 285) | def _recv_filter(self, bus: int, addr: int) -> bool:
method _recv_buffer (line 304) | def _recv_buffer(self, drain: bool = False) -> None:
method recv (line 328) | def recv(self, drain: bool = False) -> Generator[bytes, None, None]:
method send (line 338) | def send(self, msgs: List[bytes], delay: float = 0) -> None:
class IsoTpMessage (line 357) | class IsoTpMessage():
method __init__ (line 358) | def __init__(self, can_client: CanClient, timeout: float = 1, debug: b...
method send (line 364) | def send(self, dat: bytes) -> None:
method _tx_first_frame (line 382) | def _tx_first_frame(self) -> None:
method recv (line 396) | def recv(self) -> Optional[bytes]:
method _isotp_rx_next (line 413) | def _isotp_rx_next(self, rx_data: bytes) -> None:
function get_rx_addr_for_tx_addr (line 489) | def get_rx_addr_for_tx_addr(tx_addr, rx_offset=0x8):
class UdsClient (line 505) | class UdsClient():
method __init__ (line 506) | def __init__(self, panda, tx_addr: int, rx_addr: int = None, bus: int ...
method _uds_request (line 515) | def _uds_request(self, service_type: SERVICE_TYPE, subfunction: int = ...
method diagnostic_session_control (line 567) | def diagnostic_session_control(self, session_type: SESSION_TYPE):
method ecu_reset (line 570) | def ecu_reset(self, reset_type: RESET_TYPE):
method security_access (line 577) | def security_access(self, access_type: ACCESS_TYPE, security_key: byte...
method communication_control (line 588) | def communication_control(self, control_type: CONTROL_TYPE, message_ty...
method tester_present (line 592) | def tester_present(self, ):
method access_timing_parameter (line 595) | def access_timing_parameter(self, timing_parameter_type: TIMING_PARAME...
method secured_data_transmission (line 609) | def secured_data_transmission(self, data: bytes):
method control_dtc_setting (line 615) | def control_dtc_setting(self, dtc_setting_type: DTC_SETTING_TYPE):
method response_on_event (line 618) | def response_on_event(self, response_event_type: RESPONSE_EVENT_TYPE, ...
method link_control (line 638) | def link_control(self, link_control_type: LINK_CONTROL_TYPE, baud_rate...
method read_data_by_identifier (line 651) | def read_data_by_identifier(self, data_identifier_type: DATA_IDENTIFIE...
method read_memory_by_address (line 660) | def read_memory_by_address(self, memory_address: int, memory_size: int...
method read_scaling_data_by_identifier (line 677) | def read_scaling_data_by_identifier(self, data_identifier_type: DATA_I...
method read_data_by_periodic_identifier (line 685) | def read_data_by_periodic_identifier(self, transmission_mode_type: TRA...
method dynamically_define_data_identifier (line 690) | def dynamically_define_data_identifier(self, dynamic_definition_type: ...
method write_data_by_identifier (line 716) | def write_data_by_identifier(self, data_identifier_type: DATA_IDENTIFI...
method write_memory_by_address (line 723) | def write_memory_by_address(self, memory_address: int, memory_size: in...
method clear_diagnostic_information (line 740) | def clear_diagnostic_information(self, dtc_group_type: DTC_GROUP_TYPE):
method read_dtc_information (line 744) | def read_dtc_information(self, dtc_report_type: DTC_REPORT_TYPE, dtc_s...
method input_output_control_by_identifier (line 782) | def input_output_control_by_identifier(self, data_identifier_type: DAT...
method routine_control (line 791) | def routine_control(self, routine_control_type: ROUTINE_CONTROL_TYPE, ...
method request_download (line 799) | def request_download(self, memory_address: int, memory_size: int, memo...
method request_upload (line 824) | def request_upload(self, memory_address: int, memory_size: int, memory...
method transfer_data (line 849) | def transfer_data(self, block_sequence_count: int, data: bytes = b''):
method request_transfer_exit (line 857) | def request_transfer_exit(self):
FILE: panda/python/update.py
function ensure_st_up_to_date (line 5) | def ensure_st_up_to_date():
FILE: phonelibs/android_frameworks_native/include/android/asset_manager.h
type AAssetManager (line 33) | struct AAssetManager
type AAssetManager (line 47) | typedef struct AAssetManager AAssetManager;
type AAssetDir (line 49) | struct AAssetDir
type AAssetDir (line 57) | typedef struct AAssetDir AAssetDir;
type AAsset (line 59) | struct AAsset
type AAsset (line 66) | typedef struct AAsset AAsset;
FILE: phonelibs/android_frameworks_native/include/android/bitmap.h
type AndroidBitmapFormat (line 52) | enum AndroidBitmapFormat {
type AndroidBitmapInfo (line 66) | typedef struct {
FILE: phonelibs/android_frameworks_native/include/android/configuration.h
type AConfiguration (line 35) | struct AConfiguration
type AConfiguration (line 44) | typedef struct AConfiguration AConfiguration;
FILE: phonelibs/android_frameworks_native/include/android/input.h
type AInputEvent (line 138) | struct AInputEvent
type AInputEvent (line 145) | typedef struct AInputEvent AInputEvent;
type AInputQueue (line 1261) | struct AInputQueue
type AInputQueue (line 1268) | typedef struct AInputQueue AInputQueue;
FILE: phonelibs/android_frameworks_native/include/android/looper.h
type ALooper (line 33) | struct ALooper
type ALooper (line 47) | typedef struct ALooper ALooper;
FILE: phonelibs/android_frameworks_native/include/android/multinetwork.h
type addrinfo (line 105) | struct addrinfo
type addrinfo (line 105) | struct addrinfo
FILE: phonelibs/android_frameworks_native/include/android/native_activity.h
type ANativeActivityCallbacks (line 45) | struct ANativeActivityCallbacks
type ANativeActivity (line 52) | typedef struct ANativeActivity {
type ANativeActivityCallbacks (line 127) | typedef struct ANativeActivityCallbacks {
FILE: phonelibs/android_frameworks_native/include/android/native_window.h
type ANativeWindow (line 47) | struct ANativeWindow
type ANativeWindow (line 53) | typedef struct ANativeWindow ANativeWindow;
type ANativeWindow_Buffer (line 60) | typedef struct ANativeWindow_Buffer {
FILE: phonelibs/android_frameworks_native/include/android/obb.h
type AObbInfo (line 35) | struct AObbInfo
type AObbInfo (line 37) | typedef struct AObbInfo AObbInfo;
FILE: phonelibs/android_frameworks_native/include/android/rect.h
type ARect (line 42) | typedef struct ARect {
FILE: phonelibs/android_frameworks_native/include/android/sensor.h
type ASensorVector (line 155) | typedef struct ASensorVector {
type AMetaDataEvent (line 173) | typedef struct AMetaDataEvent {
type AUncalibratedEvent (line 178) | typedef struct AUncalibratedEvent {
type AHeartRateEvent (line 197) | typedef struct AHeartRateEvent {
type ASensorEvent (line 203) | typedef struct ASensorEvent {
type ASensorManager (line 235) | struct ASensorManager
type ASensorManager (line 252) | typedef struct ASensorManager ASensorManager;
type ASensorEventQueue (line 255) | struct ASensorEventQueue
type ASensorEventQueue (line 271) | typedef struct ASensorEventQueue ASensorEventQueue;
type ASensor (line 273) | struct ASensor
type ASensor (line 295) | typedef struct ASensor ASensor;
type ASensor (line 301) | typedef ASensor const* ASensorRef;
type ASensorRef (line 307) | typedef ASensorRef const* ASensorList;
FILE: phonelibs/android_frameworks_native/include/android/storage_manager.h
type AStorageManager (line 35) | struct AStorageManager
type AStorageManager (line 40) | typedef struct AStorageManager AStorageManager;
FILE: phonelibs/android_frameworks_native/include/binder/AppOpsManager.h
function namespace (line 25) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/Binder.h
function class (line 27) | class BBinder : public IBinder
FILE: phonelibs/android_frameworks_native/include/binder/BinderService.h
function namespace (line 31) | namespace android {
function instantiate (line 49) | static void instantiate() { publish(); }
function status_t (line 51) | static status_t shutdown() { return NO_ERROR; }
FILE: phonelibs/android_frameworks_native/include/binder/BpBinder.h
function namespace (line 25) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/BufferedTextOutput.h
function namespace (line 25) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/Debug.h
function namespace (line 23) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IAppOpsCallback.h
function namespace (line 23) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IAppOpsService.h
function namespace (line 24) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IBatteryStats.h
function namespace (line 22) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IBinder.h
function namespace (line 30) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IInterface.h
function namespace (line 23) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IMemory.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IPCThreadState.h
type uid_t (line 26) | typedef int uid_t;
function namespace (line 30) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IPermissionController.h
function namespace (line 24) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IProcessInfoService.h
function namespace (line 22) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/IServiceManager.h
function namespace (line 26) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/MemoryBase.h
function namespace (line 26) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/MemoryDealer.h
function namespace (line 27) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/MemoryHeapBase.h
function namespace (line 26) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/MemoryHeapIon.h
function namespace (line 52) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/Parcel.h
function namespace (line 29) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/PermissionCache.h
function namespace (line 27) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/ProcessState.h
function namespace (line 30) | namespace android {
FILE: phonelibs/android_frameworks_native/include/binder/TextOutput.h
function namespace (line 26) | namespace android {
function class (line 85) | class TypeCode
function class (line 99) | class HexDump
function TypeCode (line 166) | inline TypeCode::TypeCode(uint32_t code) : mCode(code) { }
function TypeCode (line 167) | inline TypeCode::~TypeCode() { }
function HexDump (line 170) | inline HexDump::~HexDump() { }
function HexDump (line 172) | inline HexDump& HexDump::setBytesPerLine(size_t bytesPerLine) {
function HexDump (line 175) | inline HexDump& HexDump::setSingleLineCutoff(int32_t bytes) {
function HexDump (line 178) | inline HexDump& HexDump::setAlignment(size_t alignment) {
function HexDump (line 181) | inline HexDump& HexDump::setCArrayStyle(bool enabled) {
FILE: phonelibs/android_frameworks_native/include/gui/BitTube.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferItem.h
function namespace (line 31) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferItemConsumer.h
function namespace (line 30) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferQueue.h
function class (line 32) | class BufferQueue {
FILE: phonelibs/android_frameworks_native/include/gui/BufferQueueConsumer.h
function namespace (line 26) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferQueueCore.h
function namespace (line 50) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferQueueDefs.h
function namespace (line 22) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferQueueProducer.h
function namespace (line 23) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/BufferSlot.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/ConsumerBase.h
function namespace (line 29) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/CpuConsumer.h
function class (line 41) | class CpuConsumer : public ConsumerBase
FILE: phonelibs/android_frameworks_native/include/gui/DisplayEventReceiver.h
function namespace (line 31) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/GLConsumer.h
function namespace (line 33) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/GraphicBufferAlloc.h
function namespace (line 27) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/GuiConfig.h
function namespace (line 22) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/IConsumerListener.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/IDisplayEventConnection.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/IGraphicBufferAlloc.h
function namespace (line 27) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/IGraphicBufferConsumer.h
function class (line 43) | class IGraphicBufferConsumer : public IInterface {
FILE: phonelibs/android_frameworks_native/include/gui/IGraphicBufferProducer.h
function namespace (line 33) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/IProducerListener.h
function namespace (line 24) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/ISensorEventConnection.h
function namespace (line 28) | namespace android {
function class (line 47) | class BnSensorEventConnection : public BnInterface<ISensorEventConnection>
FILE: phonelibs/android_frameworks_native/include/gui/ISensorServer.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/ISurfaceComposer.h
function namespace (line 35) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/ISurfaceComposerClient.h
function namespace (line 31) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/Sensor.h
type ASensor (line 34) | struct ASensor { }
function namespace (line 37) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/SensorEventQueue.h
type ALooper (line 32) | struct ALooper
type ASensorEvent (line 33) | struct ASensorEvent
type ASensorEventQueue (line 36) | struct ASensorEventQueue {
function namespace (line 41) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/SensorManager.h
type ASensorManager (line 39) | struct ASensorManager { }
function namespace (line 42) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/StreamSplitter.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/Surface.h
type ANativeWindow_Buffer (line 30) | struct ANativeWindow_Buffer
function namespace (line 32) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/SurfaceComposerClient.h
function namespace (line 37) | namespace android {
FILE: phonelibs/android_frameworks_native/include/gui/SurfaceControl.h
function namespace (line 33) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/ANativeObjectBase.h
type egl_native_pixmap_t (line 29) | typedef struct egl_native_pixmap_t
function namespace (line 51) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/DisplayInfo.h
function namespace (line 26) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/DisplayStatInfo.h
function namespace (line 22) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/Fence.h
type ANativeWindowBuffer (line 30) | struct ANativeWindowBuffer
function namespace (line 32) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/FrameStats.h
function namespace (line 24) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/FramebufferNativeWindow.h
function namespace (line 41) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/GraphicBuffer.h
type ANativeWindowBuffer (line 30) | struct ANativeWindowBuffer
function namespace (line 32) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/GraphicBufferAllocator.h
function namespace (line 35) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/GraphicBufferMapper.h
type gralloc_module_t (line 28) | struct gralloc_module_t
function namespace (line 30) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/PixelFormat.h
function namespace (line 30) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/Point.h
function Point (line 35) | inline Point() {
function operator (line 40) | inline bool operator == (const Point& rhs) const {
function operator (line 43) | inline bool operator != (const Point& rhs) const {
function operator (line 53) | bool operator < (const Point& rhs) const {
FILE: phonelibs/android_frameworks_native/include/ui/Rect.h
function namespace (line 27) | namespace android {
function clear (line 81) | inline void clear() {
function setLeftTop (line 109) | void setLeftTop(const Point& lt) {
function setRightBottom (line 114) | void setRightBottom(const Point& rb) {
function operator (line 134) | inline bool operator == (const Rect& rhs) const {
function operator (line 139) | inline bool operator != (const Rect& rhs) const {
function set (line 190) | inline void set(const Rect& rhs) { operator = (rhs); }
FILE: phonelibs/android_frameworks_native/include/ui/Region.h
function namespace (line 28) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/TMatHelpers.h
function namespace (line 35) | namespace android {
function friend (line 240) | friend BASE<T> PURE transpose(const BASE<T>& m) { return matrix::transpo...
function PURE (line 241) | PURE trace(const BASE<T>& m) { return matrix::trace(m); }
FILE: phonelibs/android_frameworks_native/include/ui/TVecHelpers.h
function operator (line 51) | operator TYPE& () {
function friend (line 220) | friend inline
function T (line 350) | inline
function PURE (line 359) | PURE length(const BASE<T>& lv) {
function T (line 364) | inline
function friend (line 369) | friend inline
FILE: phonelibs/android_frameworks_native/include/ui/UiConfig.h
function namespace (line 22) | namespace android {
FILE: phonelibs/android_frameworks_native/include/ui/mat4.h
function namespace (line 31) | namespace android {
function col_type (line 81) | inline col_type& operator [] (size_t i) { return mValue[i]; }
function T (line 83) | T const* asArray() const { return &mValue[0][0]; }
function explicit (line 94) | explicit tmat44(no_init) { }
function PURE (line 382) | PURE diag(const tmat44<T>& m) {
type tmat44 (line 388) | typedef tmat44<float> mat4;
FILE: phonelibs/android_frameworks_native/include/ui/vec2.h
function namespace (line 26) | namespace android {
type tvec2 (line 86) | typedef tvec2<float> vec2;
FILE: phonelibs/android_frameworks_native/include/ui/vec3.h
function namespace (line 25) | namespace android {
type tvec3 (line 108) | typedef tvec3<float> vec3;
FILE: phonelibs/android_frameworks_native/include/ui/vec4.h
function namespace (line 25) | namespace android {
type tvec4 (line 113) | typedef tvec4<float> vec4;
FILE: phonelibs/android_hardware_libhardware/include/hardware/activity_recognition.h
type activity_event_t (line 106) | typedef struct activity_event {
type activity_recognition_module_t (line 123) | typedef struct activity_recognition_module {
type activity_recognition_device (line 143) | struct activity_recognition_device
type activity_recognition_callback_procs_t (line 145) | typedef struct activity_recognition_callback_procs {
type activity_recognition_device_t (line 154) | typedef struct activity_recognition_device {
function activity_recognition_open (line 211) | static inline int activity_recognition_open(const hw_module_t* module,
function activity_recognition_close (line 217) | static inline int activity_recognition_close(activity_recognition_device...
FILE: phonelibs/android_hardware_libhardware/include/hardware/audio.h
type audio_stream (line 173) | struct audio_stream {
type audio_stream_t (line 254) | typedef struct audio_stream audio_stream_t;
type stream_callback_event_t (line 257) | typedef enum {
type audio_drain_type_t (line 265) | typedef enum {
type audio_stream_out (line 279) | struct audio_stream_out {
type audio_stream_out_t (line 405) | typedef struct audio_stream_out audio_stream_out_t;
type audio_stream_in (line 407) | struct audio_stream_in {
type audio_stream_in_t (line 438) | typedef struct audio_stream_in audio_stream_in_t;
function audio_stream_frame_size (line 445) | __attribute__((__deprecated__))
function audio_stream_out_frame_size (line 462) | static inline size_t audio_stream_out_frame_size(const struct audio_stre...
function audio_stream_in_frame_size (line 478) | static inline size_t audio_stream_in_frame_size(const struct audio_strea...
type audio_module (line 498) | struct audio_module {
type audio_hw_device (line 502) | struct audio_hw_device {
type audio_hw_device_t (line 681) | typedef struct audio_hw_device audio_hw_device_t;
function audio_hw_device_open (line 685) | static inline int audio_hw_device_open(const struct hw_module_t* module,
function audio_hw_device_close (line 692) | static inline int audio_hw_device_close(struct audio_hw_device* device)
FILE: phonelibs/android_hardware_libhardware/include/hardware/audio_alsaops.h
function pcm_format (line 37) | pcm_format pcm_format_from_audio_format(audio_format_t format)
function audio_format_t (line 72) | static inline audio_format_t audio_format_from_pcm_format(enum pcm_forma...
FILE: phonelibs/android_hardware_libhardware/include/hardware/audio_amplifier.h
type str_parms (line 41) | struct str_parms
type amplifier_device_t (line 43) | typedef struct amplifier_device {
type amplifier_module_t (line 118) | typedef struct amplifier_module {
function amplifier_device_open (line 130) | static inline int amplifier_device_open(const struct hw_module_t *module,
function amplifier_device_close (line 137) | static inline int amplifier_device_close(struct amplifier_device *device)
FILE: phonelibs/android_hardware_libhardware/include/hardware/audio_effect.h
type effect_uuid_s (line 49) | struct effect_uuid_s {
type effect_descriptor_t (line 70) | typedef struct effect_descriptor_s {
type effect_interface_s (line 274) | struct effect_interface_s
type audio_buffer_t (line 278) | typedef struct audio_buffer_s audio_buffer_t;
type effect_interface_s (line 286) | struct effect_interface_s {
type effect_command_e (line 420) | enum effect_command_e {
type audio_buffer_s (line 779) | struct audio_buffer_s {
type buffer_provider_t (line 803) | typedef struct buffer_provider_s {
type buffer_config_t (line 814) | typedef struct buffer_config_s {
type effect_buffer_access_e (line 826) | enum effect_buffer_access_e {
type effect_feature_e (line 834) | enum effect_feature_e {
type channel_config_t (line 841) | typedef struct channel_config_s {
type effect_config_t (line 862) | typedef struct effect_config_s {
type effect_param_t (line 892) | typedef struct effect_param_s {
type effect_offload_param_t (line 900) | typedef struct effect_offload_param_s {
type audio_effect_library_t (line 920) | typedef struct audio_effect_library_s {
FILE: phonelibs/android_hardware_libhardware/include/hardware/audio_policy.h
type effect_descriptor_s (line 81) | struct effect_descriptor_s
type audio_policy (line 83) | struct audio_policy {
type audio_policy_service_ops (line 252) | struct audio_policy_service_ops {
type audio_policy_module_t (line 418) | typedef struct audio_policy_module {
type audio_policy_device (line 422) | struct audio_policy_device {
function audio_policy_dev_open (line 442) | static inline int audio_policy_dev_open(const hw_module_t* module,
function audio_policy_dev_close (line 449) | static inline int audio_policy_dev_close(struct audio_policy_device* dev...
FILE: phonelibs/android_hardware_libhardware/include/hardware/bluetooth.h
type bt_bdaddr_t (line 57) | typedef struct {
type bt_bdname_t (line 62) | typedef struct {
type bt_scan_mode_t (line 67) | typedef enum {
type bt_state_t (line 74) | typedef enum {
type bt_status_t (line 82) | typedef enum {
type bt_pin_code_t (line 99) | typedef struct {
type bt_activity_energy_info (line 103) | typedef struct {
type bt_discovery_state_t (line 113) | typedef enum {
type bt_acl_state_t (line 119) | typedef enum {
type bt_uuid_t (line 125) | typedef struct {
type bt_service_record_t (line 130) | typedef struct
type bt_remote_version_t (line 139) | typedef struct
type bt_local_le_features_t (line 146) | typedef struct
type bt_property_type_t (line 162) | typedef enum {
type bt_property_t (line 254) | typedef struct
type bt_device_type_t (line 263) | typedef enum {
type bt_bond_state_t (line 269) | typedef enum {
type bt_ssp_variant_t (line 276) | typedef enum {
type bt_cb_thread_evt (line 346) | typedef enum {
type bt_callbacks_t (line 381) | typedef struct {
type bt_os_callouts_t (line 409) | typedef struct {
type bt_interface_t (line 438) | typedef struct {
type bluetooth_device_t (line 585) | typedef struct {
type bluetooth_device_t (line 590) | typedef bluetooth_device_t bluetooth_module_t;
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_av.h
type btav_audio_state_t (line 34) | typedef enum {
type btav_callbacks_t (line 81) | typedef struct {
type btav_interface_t (line 105) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_common_types.h
type btgatt_track_adv_info_t (line 27) | typedef struct
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_gatt.h
function __BEGIN_DECLS (line 25) | __BEGIN_DECLS
type btgatt_interface_t (line 40) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_gatt_client.h
type btgatt_unformatted_value_t (line 34) | typedef struct
type btgatt_read_params_t (line 41) | typedef struct
type btgatt_write_params_t (line 52) | typedef struct
type btgatt_notify_params_t (line 61) | typedef struct
type btgatt_filt_param_setup_t (line 71) | typedef struct
type btgatt_test_params_t (line 88) | typedef struct
type btgattc_error_t (line 100) | typedef enum
type btgatt_client_callbacks_t (line 248) | typedef struct {
type btgatt_client_interface_t (line 286) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_gatt_server.h
function __BEGIN_DECLS (line 25) | __BEGIN_DECLS
type btgatt_response_t (line 38) | typedef union
type btgatt_server_callbacks_t (line 123) | typedef struct {
type btgatt_server_interface_t (line 143) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_gatt_types.h
type btgatt_gatt_id_t (line 33) | typedef struct
type btgatt_srvc_id_t (line 40) | typedef struct
type btgatt_transport_t (line 47) | typedef enum
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_hd.h
type bthd_application_state_t (line 35) | typedef enum
type bthd_connection_state_t (line 41) | typedef enum
type bthd_app_param_t (line 50) | typedef struct
type bthd_qos_param_t (line 60) | typedef struct
type bthd_callbacks_t (line 79) | typedef struct {
type bthd_interface_t (line 92) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_hf.h
type bthf_connection_state_t (line 28) | typedef enum {
type bthf_audio_state_t (line 36) | typedef enum {
type bthf_vr_state_t (line 43) | typedef enum {
type bthf_volume_type_t (line 48) | typedef enum {
type bthf_nrec_t (line 54) | typedef enum
type bthf_wbs_config_t (line 61) | typedef enum
type bthf_bind_type_t (line 69) | typedef enum
type bthf_chld_type_t (line 78) | typedef enum
type bthf_callbacks_t (line 174) | typedef struct {
type bthf_network_state_t (line 199) | typedef enum
type bthf_service_type_t (line 206) | typedef enum
type bthf_call_state_t (line 212) | typedef enum {
type bthf_call_direction_t (line 222) | typedef enum {
type bthf_call_mode_t (line 227) | typedef enum {
type bthf_call_mpty_type_t (line 233) | typedef enum {
type bthf_hf_indicator_status_t (line 238) | typedef enum {
type bthf_call_addrtype_t (line 243) | typedef enum {
type bthf_voip_call_network_type_t (line 248) | typedef enum {
type bthf_voip_state_t (line 253) | typedef enum {
type bthf_interface_t (line 259) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_hf_client.h
type bthf_client_audio_state_t (line 30) | typedef enum {
type bthf_client_vr_state_t (line 37) | typedef enum {
type bthf_client_volume_type_t (line 42) | typedef enum {
type bthf_client_network_state_t (line 47) | typedef enum
type bthf_client_service_type_t (line 53) | typedef enum
type bthf_client_call_state_t (line 59) | typedef enum {
type bthf_client_call_t (line 69) | typedef enum {
type bthf_client_callsetup_t (line 74) | typedef enum {
type bthf_client_callheld_t (line 82) | typedef enum {
type bthf_client_resp_and_hold_t (line 88) | typedef enum {
type bthf_client_call_direction_t (line 94) | typedef enum {
type bthf_client_call_mpty_type_t (line 99) | typedef enum {
type bthf_client_cmd_complete_t (line 104) | typedef enum {
type bthf_client_call_action_t (line 115) | typedef enum {
type bthf_client_subscriber_service_type_t (line 130) | typedef enum {
type bthf_client_in_band_ring_state_t (line 136) | typedef enum {
type bthf_client_callbacks_t (line 280) | typedef struct {
type bthf_client_interface_t (line 309) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_hh.h
type bthh_connection_state_t (line 27) | typedef enum
type bthh_status_t (line 41) | typedef enum
type bthh_protocol_mode_t (line 61) | typedef enum {
type bthh_report_type_t (line 68) | typedef enum {
type bthh_hid_info_t (line 74) | typedef struct
type bthh_callbacks_t (line 124) | typedef struct {
type bthh_interface_t (line 140) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_hl.h
type bthl_app_reg_state_t (line 30) | typedef enum {
type bthl_channel_type_t (line 37) | typedef enum
type bthl_channel_state_t (line 46) | typedef enum {
type bthl_mdep_cfg_t (line 54) | typedef struct
type bthl_reg_param_t (line 62) | typedef struct
type bthl_callbacks_t (line 84) | typedef struct {
type bthl_interface_t (line 93) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_mce.h
function __BEGIN_DECLS (line 20) | __BEGIN_DECLS
type btmce_callbacks_t (line 35) | typedef struct {
type btmce_interface_t (line 41) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_pan.h
type btpan_connection_state_t (line 26) | typedef enum {
type btpan_control_state_t (line 33) | typedef enum {
type btpan_callbacks_t (line 46) | typedef struct {
type btpan_interface_t (line 51) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_rc.h
type btrc_remote_features_t (line 36) | typedef enum {
type btrc_play_status_t (line 43) | typedef enum {
type btrc_event_id_t (line 52) | typedef enum {
type btrc_browse_folderitem_t (line 65) | typedef enum {
type btrc_notification_type_t (line 73) | typedef enum {
type btrc_player_attr_t (line 79) | typedef enum {
type btrc_media_attr_t (line 86) | typedef enum {
type btrc_player_repeat_val_t (line 96) | typedef enum {
type btrc_player_shuffle_val_t (line 103) | typedef enum {
type btrc_status_t (line 109) | typedef enum {
type btrc_folder_list_item_type_t (line 117) | typedef enum {
type btrc_player_settings_t (line 123) | typedef struct {
type btrc_getfolderitem_t (line 129) | typedef struct {
type btrc_register_notification_t (line 137) | typedef union
type btrc_player_setting_text_t (line 146) | typedef struct {
type btrc_element_attr_val_t (line 151) | typedef struct {
type btrc_player_full_name_t (line 163) | typedef struct {
type btrc_folder_list_item_player_t (line 169) | typedef struct
type btrc_folder_list_item_folder_t (line 179) | typedef struct
type btrc_attr_entry_t (line 187) | typedef struct
type btrc_folder_list_item_media_t (line 193) | typedef struct
type btrc_name_t (line 202) | typedef struct {
type btrc_set_browsed_player_rsp_t (line 208) | typedef struct
type btrc_folder_list_item_t (line 218) | typedef struct
type btrc_folder_list_entries_t (line 230) | typedef struct
type btrc_callbacks_t (line 309) | typedef struct {
type btrc_interface_t (line 334) | typedef struct {
type btrc_ctrl_callbacks_t (line 458) | typedef struct {
type btrc_ctrl_interface_t (line 477) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_sdp.h
type bluetooth_sdp_hdr (line 38) | typedef struct _bluetooth_sdp_hdr {
type bluetooth_sdp_hdr_overlay (line 52) | typedef struct _bluetooth_sdp_hdr_overlay {
type bluetooth_sdp_mas_record (line 68) | typedef struct _bluetooth_sdp_mas_record {
type bluetooth_sdp_mns_record (line 75) | typedef struct _bluetooth_sdp_mns_record {
type bluetooth_sdp_pse_record (line 80) | typedef struct _bluetooth_sdp_pse_record {
type bluetooth_sdp_pce_record (line 86) | typedef struct _bluetooth_sdp_pce_record {
type bluetooth_sdp_ops_record (line 90) | typedef struct _bluetooth_sdp_ops_record {
type bluetooth_sdp_sap_record (line 96) | typedef struct _bluetooth_sdp_sap_record {
type bluetooth_sdp_record (line 100) | typedef union {
type btsdp_callbacks_t (line 114) | typedef struct {
type btsdp_interface_t (line 120) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/bt_sock.h
type btsock_type_t (line 27) | typedef enum {
type btsock_option_type_t (line 33) | typedef enum {
type sock_connect_signal_t (line 40) | typedef struct {
type btsock_interface_t (line 55) | typedef struct {
FILE: phonelibs/android_hardware_libhardware/include/hardware/camera.h
type camera_memory (line 45) | struct camera_memory
type camera_memory_t (line 47) | typedef struct camera_memory {
type camera_memory_t (line 54) | typedef camera_memory_t* (*camera_request_memory)(int fd, size_t buf_siz...
type preview_stream_ops_t (line 73) | typedef struct preview_stream_ops {
type camera_device (line 98) | struct camera_device
type camera_device_ops_t (line 99) | typedef struct camera_device_ops {
type camera_device_t (line 285) | typedef struct camera_device {
FILE: phonelibs/android_hardware_libhardware/include/hardware/camera2.h
type camera2_stream_ops_t (line 70) | typedef struct camera2_stream_ops {
type camera2_jpeg_blob (line 143) | struct camera2_jpeg_blob {
type camera2_stream_in_ops_t (line 157) | typedef struct camera2_stream_in_ops {
type camera2_request_queue_src_ops_t (line 217) | typedef struct camera2_request_queue_src_ops {
type camera2_frame_queue_dst_ops_t (line 260) | typedef struct camera2_frame_queue_dst_ops {
type camera2_device_ops_t (line 524) | typedef struct camera2_device_ops {
type camera2_device_t (line 827) | typedef struct camera2_device {
FILE: phonelibs/android_hardware_libhardware/include/hardware/camera3.h
type camera3_stream_type_t (line 1329) | typedef enum camera3_stream_type {
type camera3_stream_rotation_t (line 1387) | typedef enum camera3_stream_rotation {
type camera3_stream_configuration_mode_t (line 1408) | typedef enum camera3_stream_configuration_mode {
type camera3_stream_t (line 1503) | typedef struct camera3_stream {
type camera3_stream_configuration_t (line 1660) | typedef struct camera3_stream_configuration {
type camera3_buffer_status_t (line 1700) | typedef enum camera3_buffer_status {
type camera3_stream_buffer_t (line 1725) | typedef struct camera3_stream_buffer {
type camera3_stream_buffer_set_t (line 1814) | typedef struct camera3_stream_buffer_set {
type camera3_jpeg_blob_t (line 1855) | typedef struct camera3_jpeg_blob {
type camera3_msg_type_t (line 1880) | typedef enum camera3_msg_type {
type camera3_error_msg_code_t (line 1904) | typedef enum camera3_error_msg_code {
type camera3_error_msg_t (line 1952) | typedef struct camera3_error_msg {
type camera3_shutter_msg_t (line 1977) | typedef struct camera3_shutter_msg {
type camera3_notify_msg_t (line 1997) | typedef struct camera3_notify_msg {
type camera3_request_template_t (line 2037) | typedef enum camera3_request_template {
type camera3_capture_request_t (line 2105) | typedef struct camera3_capture_request {
type camera3_capture_result_t (line 2221) | typedef struct camera3_capture_result {
type camera3_callback_ops_t (line 2367) | typedef struct camera3_callback_ops {
type camera3_device_ops_t (line 2479) | typedef struct camera3_device_ops {
type camera3_device_t (line 3058) | typedef struct camera3_device {
FILE: phonelibs/android_hardware_libhardware/include/hardware/camera_common.h
type camera_metadata_t (line 158) | typedef struct camera_metadata camera_metadata_t;
type camera_info_t (line 160) | typedef struct camera_info {
type camera_device_status_t (line 440) | typedef enum camera_device_status {
type torch_mode_status_t (line 547) | typedef enum torch_mode_status {
type camera_module_callbacks_t (line 593) | typedef struct camera_module_callbacks {
type camera_module_t (line 645) | typedef struct camera_module {
FILE: phonelibs/android_hardware_libhardware/include/hardware/consumerir.h
type consumerir_freq_range_t (line 29) | typedef struct consumerir_freq_range {
type consumerir_module_t (line 34) | typedef struct consumerir_module {
type consumerir_device_t (line 44) | typedef struct consumerir_device {
FILE: phonelibs/android_hardware_libhardware/include/hardware/fb.h
type framebuffer_device_t (line 38) | typedef struct framebuffer_device_t {
function framebuffer_open (line 160) | static inline int framebuffer_open(const struct hw_module_t* module,
function framebuffer_close (line 166) | static inline int framebuffer_close(struct framebuffer_device_t* device) {
FILE: phonelibs/android_hardware_libhardware/include/hardware/fingerprint.h
type fingerprint_msg_type_t (line 26) | typedef enum fingerprint_msg_type {
type fingerprint_error_t (line 44) | typedef enum fingerprint_error {
type fingerprint_acquired_info_t (line 62) | typedef enum fingerprint_acquired_info {
type fingerprint_finger_id_t (line 72) | typedef struct fingerprint_finger_id {
type fingerprint_enroll_t (line 77) | typedef struct fingerprint_enroll {
type fingerprint_removed_t (line 85) | typedef struct fingerprint_removed {
type fingerprint_acquired_t (line 89) | typedef struct fingerprint_acquired {
type fingerprint_authenticated_t (line 93) | typedef struct fingerprint_authenti
Copy disabled (too large)
Download .json
Condensed preview — 1333 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,766K chars).
[
{
"path": ".gitignore",
"chars": 1066,
"preview": "venv/\n.clang-format\n.DS_Store\n.tags\n.ipynb_checkpoints\n.idea\n.overlay_init\n.overlay_consistent\n.sconsign.dblite\n.vscode*"
},
{
"path": "CHANGELOGS-DEV.md",
"chars": 24279,
"preview": "dragonpilot 0.8.9-3\n========================\n* Bug fixes.\n* Fixed up auto updater.\n* Fixed Honda Jade dbc. (Thanks to @l"
},
{
"path": "CONTRIBUTING.md",
"chars": 2057,
"preview": "# How to contribute\n\nOur software is open source so you can solve your own problems without needing help from others. An"
},
{
"path": "CONTRIBUTORS.md",
"chars": 4508,
"preview": "# CONTRIBUTORS\n\nDue to the way we manage the source code, it is not possible to see all the contributors' info, hence we"
},
{
"path": "HOWTO-ONEPLUS.md",
"chars": 1037,
"preview": "How to install on Oneplus 3t?\n------\n1. clone dragonpilot to /data/ and make sure it's named openpilot:\n (手動安裝切換至 dp)\n"
},
{
"path": "HOWTO-Translate.md",
"chars": 731,
"preview": "HOW TO Translate dragonpilot\n--\n\nIf you would like to help to translate dragonpilot into your native language, please:\n1"
},
{
"path": "Jenkinsfile",
"chars": 9117,
"preview": "def phone(String ip, String step_label, String cmd) {\n withCredentials([file(credentialsId: 'id_rsa', variable: 'key_fi"
},
{
"path": "LICENSE",
"chars": 1059,
"preview": "Copyright (c) 2018, Comma.ai, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this"
},
{
"path": "README-openpilot.md",
"chars": 35192,
"preview": "\n\nTable of Con"
},
{
"path": "README.md",
"chars": 5689,
"preview": "Licensing\n------\nxnxpilot is released under the MIT license. Some parts of the software are released under other license"
},
{
"path": "RELEASES.md",
"chars": 28765,
"preview": "Version 0.8.9 (2021-09-14)\n========================\n * Improved fan control on comma three\n * AGNOS 1.5: improved stabil"
},
{
"path": "SAFETY.md",
"chars": 2210,
"preview": "openpilot Safety\n======\n\nopenpilot is an Adaptive Cruise Control (ACC) and Automated Lane Centering (ALC) system.\nLike o"
},
{
"path": "SConstruct",
"chars": 12142,
"preview": "import os\nimport shutil\nimport subprocess\nimport sys\nimport sysconfig\nimport platform\nimport numpy as np\n\nTICI = os.path"
},
{
"path": "cereal/.gitignore",
"chars": 205,
"preview": "gen\nnode_modules\npackage-lock.json\n*.tmp\n*.pyc\n__pycache__\n.*.swp\n.*.swo\n*.os\n*.o\n*.a\n\ntest_runner\n\nlibmessaging.*\nlibme"
},
{
"path": "cereal/SConscript",
"chars": 2714,
"preview": "Import('env', 'envCython', 'arch', 'common')\n\nimport shutil\n\ncereal_dir = Dir('.')\ngen_dir = Dir('gen')\nmessaging_dir = "
},
{
"path": "cereal/__init__.py",
"chars": 243,
"preview": "# pylint: skip-file\nimport os\nimport capnp\n\nCEREAL_PATH = os.path.dirname(os.path.abspath(__file__))\ncapnp.remove_import"
},
{
"path": "cereal/car.capnp",
"chars": 15689,
"preview": "using Cxx = import \"./include/c++.capnp\";\n$Cxx.namespace(\"cereal\");\n\nusing Java = import \"./include/java.capnp\";\n$Java.p"
},
{
"path": "cereal/dp.capnp",
"chars": 1604,
"preview": "using Cxx = import \"./include/c++.capnp\";\n$Cxx.namespace(\"cereal\");\n\nusing Java = import \"./include/java.capnp\";\n$Java.p"
},
{
"path": "cereal/include/c++.capnp",
"chars": 1354,
"preview": "# Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors\n# Licensed under the MIT License:\n#\n# Permi"
},
{
"path": "cereal/include/java.capnp",
"chars": 1459,
"preview": "# Copyright (c) 2013-2015 Sandstorm Development Group, Inc. and contributors\n# Licensed under the MIT License:\n#\n# Permi"
},
{
"path": "cereal/legacy.capnp",
"chars": 20808,
"preview": "using Cxx = import \"./include/c++.capnp\";\n$Cxx.namespace(\"cereal\");\n\nusing Java = import \"./include/java.capnp\";\n$Java.p"
},
{
"path": "cereal/log.capnp",
"chars": 37257,
"preview": "using Cxx = import \"./include/c++.capnp\";\n$Cxx.namespace(\"cereal\");\n\nusing Java = import \"./include/java.capnp\";\n$Java.p"
},
{
"path": "cereal/logger/logger.h",
"chars": 559,
"preview": "#pragma once\n\n#ifdef SWAGLOG\n#include \"selfdrive/common/swaglog.h\"\n#else\n\n#define CLOUDLOG_DEBUG 10\n#define CLOUDLOG_INF"
},
{
"path": "cereal/messaging/.gitignore",
"chars": 71,
"preview": "demo\nbridge\ntest_runner\n*.o\n*.os\n*.d\n*.a\n*.so\nmessaging_pyx.cpp\nbuild/\n"
},
{
"path": "cereal/messaging/__init__.py",
"chars": 8074,
"preview": "# must be build with scons\nfrom .messaging_pyx import Context, Poller, SubSocket, PubSocket # pylint: disable=no-name-i"
},
{
"path": "cereal/messaging/bridge.cc",
"chars": 2140,
"preview": "#include <algorithm>\n#include <cassert>\n#include <csignal>\n#include <iostream>\n#include <map>\n#include <string>\n\ntypedef"
},
{
"path": "cereal/messaging/impl_msgq.cc",
"chars": 4517,
"preview": "#include <cassert>\n#include <cstring>\n#include <iostream>\n#include <cstdlib>\n#include <csignal>\n#include <cerrno>\n\n#incl"
},
{
"path": "cereal/messaging/impl_msgq.h",
"chars": 1495,
"preview": "#pragma once\n#include \"messaging.h\"\n#include \"msgq.h\"\n#include <zmq.h>\n#include <string>\n\n#define MAX_POLLERS 128\n\nclass"
},
{
"path": "cereal/messaging/impl_zmq.cc",
"chars": 3415,
"preview": "#include <cassert>\n#include <cstring>\n#include <iostream>\n#include <cstdlib>\n#include <cerrno>\n\n#include <zmq.h>\n\n#inclu"
},
{
"path": "cereal/messaging/impl_zmq.h",
"chars": 1433,
"preview": "#pragma once\n#include \"messaging.h\"\n#include <zmq.h>\n#include <string>\n\n#define MAX_POLLERS 128\n\nclass ZMQContext : publ"
},
{
"path": "cereal/messaging/messaging.cc",
"chars": 2198,
"preview": "#include \"messaging.h\"\n#include \"impl_zmq.h\"\n#include \"impl_msgq.h\"\n\n#ifdef __APPLE__\nconst bool MUST_USE_ZMQ = true;\n#e"
},
{
"path": "cereal/messaging/messaging.h",
"chars": 4696,
"preview": "#pragma once\n#include <cstddef>\n#include <map>\n#include <string>\n#include <vector>\n#include <capnp/serialize.h>\n#include"
},
{
"path": "cereal/messaging/messaging.pxd",
"chars": 895,
"preview": "# distutils: language = c++\n#cython: language_level=3\n\nfrom libcpp.string cimport string\nfrom libcpp.vector cimport vect"
},
{
"path": "cereal/messaging/messaging_pyx.pyx",
"chars": 3476,
"preview": "# distutils: language = c++\n# cython: c_string_encoding=ascii, language_level=3\n\nimport sys\nfrom libcpp.string cimport s"
},
{
"path": "cereal/messaging/msgq.cc",
"chars": 12138,
"preview": "#include <iostream>\n#include <cassert>\n#include <cerrno>\n#include <cmath>\n#include <cstring>\n#include <cstdint>\n#include"
},
{
"path": "cereal/messaging/msgq.h",
"chars": 1924,
"preview": "#pragma once\n#include <cstdint>\n#include <cstring>\n#include <string>\n#include <atomic>\n\n#define DEFAULT_SEGMENT_SIZE (10"
},
{
"path": "cereal/messaging/socketmaster.cc",
"chars": 5750,
"preview": "#include <time.h>\n#include <assert.h>\n#include <stdlib.h>\n#include <string>\n#include <mutex>\n\n#include \"services.h\"\n#inc"
},
{
"path": "cereal/services.py",
"chars": 2868,
"preview": "#!/usr/bin/env python3\nimport os\nfrom typing import Optional\n\nTICI = os.path.isfile('/TICI')\nRESERVED_PORT = 8022 # ssh"
},
{
"path": "cereal/visionipc/.gitignore",
"chars": 23,
"preview": "visionipc_pyx.cpp\n*.so\n"
},
{
"path": "cereal/visionipc/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "cereal/visionipc/ipc.cc",
"chars": 2716,
"preview": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <assert.h>\n#include <errno.h>\n\n#"
},
{
"path": "cereal/visionipc/ipc.h",
"chars": 255,
"preview": "#pragma once\n#include <cstddef>\n\nint ipc_connect(const char* socket_path);\nint ipc_bind(const char* socket_path);\nint ip"
},
{
"path": "cereal/visionipc/test_runner.cc",
"chars": 54,
"preview": "#define CATCH_CONFIG_MAIN\n#include \"catch2/catch.hpp\"\n"
},
{
"path": "cereal/visionipc/visionbuf.cc",
"chars": 1345,
"preview": "#include \"visionbuf.h\"\n\n#define ALIGN(x, align) (((x) + (align)-1) & ~((align)-1))\n\n#ifdef QCOM\n// from libadreno_utils."
},
{
"path": "cereal/visionipc/visionbuf.h",
"chars": 1250,
"preview": "#pragma once\n#include \"visionipc.h\"\n\n#define CL_USE_DEPRECATED_OPENCL_1_2_APIS\n#ifdef __APPLE__\n#include <OpenCL/cl.h>\n#"
},
{
"path": "cereal/visionipc/visionbuf_cl.cc",
"chars": 2153,
"preview": "#include \"visionbuf.h\"\n\n#include <atomic>\n#include <stdio.h>\n#include <fcntl.h>\n#include <assert.h>\n#include <stdlib.h>\n"
},
{
"path": "cereal/visionipc/visionbuf_ion.cc",
"chars": 3744,
"preview": "#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n#include <assert.h>\n#include <sys/mman.h>\n#include <sys/ioctl"
},
{
"path": "cereal/visionipc/visionipc.h",
"chars": 295,
"preview": "#pragma once\n\n#include <cstdint>\n#include <cstddef>\n\nconstexpr int VISIONIPC_MAX_FDS = 128;\n\nstruct VisionIpcBufExtra {\n"
},
{
"path": "cereal/visionipc/visionipc.pxd",
"chars": 1034,
"preview": "# distutils: language = c++\n#cython: language_level=3\n\nfrom libcpp.string cimport string\nfrom libcpp.vector cimport vect"
},
{
"path": "cereal/visionipc/visionipc_client.cc",
"chars": 3181,
"preview": "#include <chrono>\n#include <cassert>\n#include <iostream>\n#include <thread>\n\n#include \"visionipc/ipc.h\"\n#include \"visioni"
},
{
"path": "cereal/visionipc/visionipc_client.h",
"chars": 779,
"preview": "#pragma once\n#include <vector>\n#include <string>\n#include <unistd.h>\n\n#include \"messaging/messaging.h\"\n#include \"visioni"
},
{
"path": "cereal/visionipc/visionipc_pyx.pyx",
"chars": 2551,
"preview": "# distutils: language = c++\n# cython: c_string_encoding=ascii, language_level=3\n\nimport sys\nimport numpy as np\ncimport n"
},
{
"path": "cereal/visionipc/visionipc_server.cc",
"chars": 4922,
"preview": "#include <iostream>\n#include <chrono>\n#include <cassert>\n#include <random>\n\n#include <poll.h>\n#include <sys/socket.h>\n#i"
},
{
"path": "cereal/visionipc/visionipc_server.h",
"chars": 1156,
"preview": "#pragma once\n#include <vector>\n#include <string>\n#include <thread>\n#include <atomic>\n#include <map>\n\n#include \"messaging"
},
{
"path": "cereal/visionipc/visionipc_tests.cc",
"chars": 3935,
"preview": "#include <thread>\n#include <chrono>\n\n#include \"catch2/catch.hpp\"\n#include \"visionipc_server.h\"\n#include \"visionipc_clien"
},
{
"path": "common/.gitignore",
"chars": 6,
"preview": "*.cpp\n"
},
{
"path": "common/SConscript",
"chars": 169,
"preview": "Import('envCython', 'common')\n\nenvCython.Program('clock.so', 'clock.pyx')\nenvCython.Program('params_pyx.so', 'params_pyx"
},
{
"path": "common/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "common/api/__init__.py",
"chars": 1754,
"preview": "import jwt\nimport os\nimport requests\nfrom datetime import datetime, timedelta\nfrom common.basedir import PERSIST\nfrom se"
},
{
"path": "common/basedir.py",
"chars": 264,
"preview": "import os\nfrom pathlib import Path\n\nfrom selfdrive.hardware import PC\n\nBASEDIR = os.path.abspath(os.path.join(os.path.di"
},
{
"path": "common/clock.pyx",
"chars": 602,
"preview": "# distutils: language = c++\n# cython: language_level = 3\nfrom posix.time cimport clock_gettime, timespec, CLOCK_MONOTONI"
},
{
"path": "common/cython_hacks.py",
"chars": 611,
"preview": "import os\nimport sysconfig\nfrom Cython.Distutils import build_ext\n\ndef get_ext_filename_without_platform_suffix(filename"
},
{
"path": "common/dict_helpers.py",
"chars": 259,
"preview": "# remove all keys that end in DEPRECATED\ndef strip_deprecated_keys(d):\n for k in list(d.keys()):\n if isinstance(k, s"
},
{
"path": "common/dp_common.py",
"chars": 2500,
"preview": "#!/usr/bin/env python3.7\nimport subprocess\nfrom cereal import car\nfrom common.params import Params\nfrom common.realtime "
},
{
"path": "common/dp_conf.py",
"chars": 13524,
"preview": "#!/usr/bin/env python3.7\nimport os\nimport sys\nimport json\nimport time\nfrom math import floor\n\n'''\n* type: Bool, Int8, UI"
},
{
"path": "common/dp_time.py",
"chars": 175,
"preview": "#!/usr/bin/env python3.7\n\n# delay of reading last modified\nLAST_MODIFIED_THERMALD = 10.\nLAST_MODIFIED_SYSTEMD = 1.\nLAST_"
},
{
"path": "common/ffi_wrapper.py",
"chars": 1328,
"preview": "import os\nimport sys\nimport fcntl\nimport hashlib\nimport platform\nfrom cffi import FFI\n\ndef suffix():\n if platform.syste"
},
{
"path": "common/file_helpers.py",
"chars": 2519,
"preview": "import os\nimport shutil\nimport tempfile\nfrom atomicwrites import AtomicWriter\n\n\ndef mkdirs_exists_ok(path):\n if path.st"
},
{
"path": "common/filter_simple.py",
"chars": 449,
"preview": "class FirstOrderFilter:\n # first order filter\n def __init__(self, x0, rc, dt, initialized=True):\n self.x = x0\n s"
},
{
"path": "common/gpio.py",
"chars": 432,
"preview": "def gpio_init(pin, output):\n try:\n with open(f\"/sys/class/gpio/gpio{pin}/direction\", 'wb') as f:\n f.write(b\"out"
},
{
"path": "common/i18n.py",
"chars": 508,
"preview": "import gettext\nfrom common.params import Params\nimport os\n\nlocale_dir = \"/data/openpilot/selfdrive/assets/locales\"\nsuppo"
},
{
"path": "common/kalman/.gitignore",
"chars": 21,
"preview": "simple_kalman_impl.c\n"
},
{
"path": "common/kalman/SConscript",
"chars": 90,
"preview": "Import('envCython')\n\nenvCython.Program('simple_kalman_impl.so', 'simple_kalman_impl.pyx')\n"
},
{
"path": "common/kalman/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "common/kalman/simple_kalman.py",
"chars": 90,
"preview": "# pylint: skip-file\nfrom common.kalman.simple_kalman_impl import KF1D as KF1D\nassert KF1D\n"
},
{
"path": "common/kalman/simple_kalman_impl.pxd",
"chars": 290,
"preview": "# cython: language_level = 3\n\ncdef class KF1D:\n cdef public:\n double x0_0\n double x1_0\n double K0_0\n double"
},
{
"path": "common/kalman/simple_kalman_impl.pyx",
"chars": 978,
"preview": "# distutils: language = c++\n# cython: language_level=3\n\ncdef class KF1D:\n def __init__(self, x0, A, C, K):\n self.x0_"
},
{
"path": "common/kalman/simple_kalman_old.py",
"chars": 641,
"preview": "import numpy as np\n\n\nclass KF1D:\n # this EKF assumes constant covariance matrix, so calculations are much simpler\n # t"
},
{
"path": "common/kalman/tests/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "common/kalman/tests/test_simple_kalman.py",
"chars": 2283,
"preview": "import unittest\nimport random\nimport timeit\nimport numpy as np\n\nfrom common.kalman.simple_kalman import KF1D\nfrom common"
},
{
"path": "common/logging_extra.py",
"chars": 6389,
"preview": "import io\nimport os\nimport sys\nimport copy\nimport json\nimport uuid\nimport socket\nimport logging\nimport traceback\nfrom th"
},
{
"path": "common/numpy_fast.py",
"chars": 503,
"preview": "def int_rnd(x):\n return int(round(x))\n\ndef clip(x, lo, hi):\n return max(lo, min(hi, x))\n\ndef interp(x, xp, fp):\n N = "
},
{
"path": "common/params.py",
"chars": 812,
"preview": "from common.params_pyx import Params, ParamKeyType, UnknownKeyName, put_nonblocking # pylint: disable=no-name-in-module,"
},
{
"path": "common/params_pxd.pxd",
"chars": 699,
"preview": "from libcpp.string cimport string\nfrom libcpp cimport bool\n\ncdef extern from \"selfdrive/common/params.cc\":\n pass\n\ncdef "
},
{
"path": "common/params_pyx.pyx",
"chars": 2906,
"preview": "# distutils: language = c++\n# cython: language_level = 3\nfrom libcpp cimport bool\nfrom libcpp.string cimport string\nfrom"
},
{
"path": "common/profiler.py",
"chars": 1389,
"preview": "import time\n\nclass Profiler():\n def __init__(self, enabled=False):\n self.enabled = enabled\n self.cp = {}\n self"
},
{
"path": "common/realtime.py",
"chars": 2308,
"preview": "\"\"\"Utilities for reading real time clocks and keeping soft real time constraints.\"\"\"\nimport gc\nimport os\nimport time\nimp"
},
{
"path": "common/spinner.py",
"chars": 1299,
"preview": "import os\nimport subprocess\nfrom common.basedir import BASEDIR\n\n\nclass Spinner():\n def __init__(self):\n try:\n s"
},
{
"path": "common/stat_live.py",
"chars": 1887,
"preview": "import numpy as np\n\nclass RunningStat():\n # tracks realtime mean and standard deviation without storing any data\n def "
},
{
"path": "common/text_window.py",
"chars": 1597,
"preview": "#!/usr/bin/env python3\nimport os\nimport time\nimport subprocess\nfrom common.basedir import BASEDIR\n\n\nclass TextWindow:\n "
},
{
"path": "common/timeout.py",
"chars": 707,
"preview": "import signal\n\nclass TimeoutException(Exception):\n pass\n\nclass Timeout:\n \"\"\"\n Timeout context manager.\n For example "
},
{
"path": "common/transformations/SConscript",
"chars": 205,
"preview": "Import('env', 'envCython')\n\ntransformations = env.Library('transformations', ['orientation.cc', 'coordinates.cc'])\nExpor"
},
{
"path": "common/transformations/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "common/transformations/camera.py",
"chars": 6781,
"preview": "import numpy as np\n\nimport common.transformations.orientation as orient\nfrom selfdrive.hardware import TICI\n\n## -- hardc"
},
{
"path": "common/transformations/coordinates.cc",
"chars": 2860,
"preview": "#define _USE_MATH_DEFINES\n\n#include <iostream>\n#include <cmath>\n#include <eigen3/Eigen/Dense>\n\n#include \"coordinates.hpp"
},
{
"path": "common/transformations/coordinates.hpp",
"chars": 843,
"preview": "#pragma once\n\n#define DEG2RAD(x) ((x) * M_PI / 180.0)\n#define RAD2DEG(x) ((x) * 180.0 / M_PI)\n\nstruct ECEF {\n double x,"
},
{
"path": "common/transformations/coordinates.py",
"chars": 843,
"preview": "# pylint: skip-file\nfrom common.transformations.orientation import numpy_wrap\nfrom common.transformations.transformation"
},
{
"path": "common/transformations/model.py",
"chars": 6210,
"preview": "import numpy as np\n\nfrom common.transformations.camera import (FULL_FRAME_SIZE,\n "
},
{
"path": "common/transformations/orientation.cc",
"chars": 4578,
"preview": "#define _USE_MATH_DEFINES\n\n#include <iostream>\n#include <cmath>\n#include <eigen3/Eigen/Dense>\n\n#include \"orientation.hpp"
},
{
"path": "common/transformations/orientation.hpp",
"chars": 735,
"preview": "#pragma once\n#include <eigen3/Eigen/Dense>\n#include \"coordinates.hpp\"\n\n\nEigen::Quaterniond ensure_unique(Eigen::Quaterni"
},
{
"path": "common/transformations/orientation.py",
"chars": 1925,
"preview": "# pylint: skip-file\nimport numpy as np\n\nfrom common.transformations.transformations import (ecef_euler_from_ned_single,\n"
},
{
"path": "common/transformations/transformations.pxd",
"chars": 1501,
"preview": "#cython: language_level=3\nfrom libcpp cimport bool\n\ncdef extern from \"orientation.cc\":\n pass\n\ncdef extern from \"orienta"
},
{
"path": "common/transformations/transformations.pyx",
"chars": 5509,
"preview": "# distutils: language = c++\n# cython: language_level = 3\nfrom common.transformations.transformations cimport Matrix3, Ve"
},
{
"path": "common/xattr.py",
"chars": 1667,
"preview": "import os\nfrom cffi import FFI\n\n# Workaround for the EON/termux build of Python having os.*xattr removed.\nffi = FFI()\nff"
},
{
"path": "installer/custom/install_gfortran.sh",
"chars": 1144,
"preview": "#!/data/data/com.termux/files/usr/bin/sh\n# Get some needed tools. coreutils for mkdir command, gnugp for the signing key"
},
{
"path": "installer/custom/termux-elf-cleaner/COPYING",
"chars": 35141,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "installer/custom/termux-elf-cleaner/Makefile",
"chars": 345,
"preview": "CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic\nPREFIX ?= /usr/local\n\ntermux-elf-cleaner: termux-elf-cleaner.cpp\n\nclean:\n"
},
{
"path": "installer/custom/termux-elf-cleaner/README.md",
"chars": 1337,
"preview": "# termux-elf-cleaner\nUtility for Android ELF files to remove unused parts that the linker warns about.\n\n## Description\nW"
},
{
"path": "installer/custom/termux-elf-cleaner/elf.h",
"chars": 11376,
"preview": "#ifndef ELF_H_INCLUDED\n#define ELF_H_INCLUDED\n\n#include <stdint.h>\n\n/* Type for a 16-bit quantity. */\ntypedef uint16_t "
},
{
"path": "installer/custom/termux-elf-cleaner/termux-elf-cleaner.cpp",
"chars": 7077,
"preview": "#include <algorithm>\n#include <fcntl.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/mman.h>"
},
{
"path": "installer/updater/Makefile",
"chars": 2751,
"preview": "CC = clang\nCXX = clang++\n\nPHONELIBS = ../../phonelibs\n\nWARN_FLAGS = -Werror=implicit-function-declaration \\\n "
},
{
"path": "installer/updater/oneplus.json",
"chars": 481,
"preview": "{\n \"ota_url\": \"https://commadist.azureedge.net/neosupdate/ota-signed-5dc2575d713977666a8e14ae1b43a04d7f63123934c80fa107"
},
{
"path": "installer/updater/update.json",
"chars": 481,
"preview": "{\n \"ota_url\": \"https://commadist.azureedge.net/neosupdate/ota-signed-5dc2575d713977666a8e14ae1b43a04d7f63123934c80fa107"
},
{
"path": "jetson/env_installer.sh",
"chars": 18118,
"preview": "#!/bin/bash -e\n# The MIT License\n#\n# Copyright (c) 2019-, Rick Lan, dragonpilot community, and a number of other of cont"
},
{
"path": "jetson/launcher.sh",
"chars": 64,
"preview": "#!/bin/bash -e\ncd /data/openpilot && bash -i launch_chffrplus.sh"
},
{
"path": "jetson/openpilot_env.sh",
"chars": 822,
"preview": "if [ -z \"$OPENPILOT_ENV\" ]; then\n export PYTHONPATH=\"/data/openpilot:$PYTHONPATH\"\n\n unamestr=`uname`\n if [[ \"$unamest"
},
{
"path": "jetson/release.py",
"chars": 2101,
"preview": "#!/usr/bin/env python3\n'''\nThis script is used to clean up files prior publish to xnxpilot.\nRun this in jetson device to"
},
{
"path": "launch_chffrplus.sh",
"chars": 10355,
"preview": "#!/usr/bin/bash\n\nif [ -z \"$BASEDIR\" ]; then\n BASEDIR=\"/data/openpilot\"\nfi\n\nsource \"$BASEDIR/launch_env.sh\"\n\nDIR=\"$( cd "
},
{
"path": "launch_env.sh",
"chars": 399,
"preview": "#!/usr/bin/bash\n\nexport OMP_NUM_THREADS=1\nexport MKL_NUM_THREADS=1\nexport NUMEXPR_NUM_THREADS=1\nexport OPENBLAS_NUM_THRE"
},
{
"path": "launch_openpilot.sh",
"chars": 244,
"preview": "#!/usr/bin/bash\nsize=$(du -sb .git/index 2>/dev/null|awk '{print $1}')\necho $size|grep -E '^[0-9]+$' >/dev/null || size="
},
{
"path": "opendbc/.gitignore",
"chars": 184,
"preview": ".mypy_cache/\n*.pyc\n*.os\n*.o\n*.tmp\n*.dylib\n.*.swp\n.DS_Store\n.sconsign.dblite\n\ncan/*.so\ncan/build/\ncan/obj/\ncan/packer_pyx"
},
{
"path": "opendbc/__init__.py",
"chars": 64,
"preview": "import os\nDBC_PATH = os.path.dirname(os.path.abspath(__file__))\n"
},
{
"path": "opendbc/acura_ilx_2016_can_generated.dbc",
"chars": 12799,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/acura_ilx_2016_nidec.dbc",
"chars": 5237,
"preview": "VERSION \"\"\n\n\nNS_ : \n\tNS_DESC_\n\tCM_\n\tBA_DEF_\n\tBA_\n\tVAL_\n\tCAT_DEF_\n\tCAT_\n\tFILTER\n\tBA_DEF_DEF_\n\tEV_DATA_\n\tENVVAR_DATA_\n\tSGT"
},
{
"path": "opendbc/acura_rdx_2018_can_generated.dbc",
"chars": 12169,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/acura_rdx_2020_can_generated.dbc",
"chars": 17121,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2020.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/can/SConscript",
"chars": 831,
"preview": "Import('env', 'envCython', 'cereal')\n\nimport os\nfrom opendbc.can.process_dbc import process\n\ndbcs = []\nfor x in sorted(o"
},
{
"path": "opendbc/can/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "opendbc/can/can_define.py",
"chars": 113,
"preview": "from opendbc.can.parser_pyx import CANDefine # pylint: disable=no-name-in-module, import-error\nassert CANDefine\n"
},
{
"path": "opendbc/can/common.cc",
"chars": 7880,
"preview": "#include \"common.h\"\n\nunsigned int honda_checksum(unsigned int address, uint64_t d, int l) {\n d >>= ((8-l)*8); // remove"
},
{
"path": "opendbc/can/common.h",
"chars": 2387,
"preview": "#pragma once\n\n#include <vector>\n#include <map>\n#include <unordered_map>\n\n#include \"common_dbc.h\"\n#include <capnp/dynamic"
},
{
"path": "opendbc/can/common.pxd",
"chars": 1778,
"preview": "# distutils: language = c++\n#cython: language_level=3\n\nfrom libc.stdint cimport uint32_t, uint64_t, uint16_t\nfrom libcpp"
},
{
"path": "opendbc/can/common_dbc.h",
"chars": 1402,
"preview": "#pragma once\n\n#include <cstddef>\n#include <cstdint>\n#include <string>\n#include <vector>\n\n#define ARRAYSIZE(x) (sizeof(x)"
},
{
"path": "opendbc/can/dbc.cc",
"chars": 492,
"preview": "#include <vector>\n\n#include \"common_dbc.h\"\n\nstd::vector<const DBC*>& get_dbcs() {\n static std::vector<const DBC*> vec;\n"
},
{
"path": "opendbc/can/dbc.py",
"chars": 8588,
"preview": "import re\nimport os\nimport struct\nimport sys\nimport numbers\nfrom collections import namedtuple, defaultdict\n\ndef int_or_"
},
{
"path": "opendbc/can/dbc_out/.gitignore",
"chars": 6,
"preview": "*.cc\n\n"
},
{
"path": "opendbc/can/dbc_out/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "opendbc/can/dbc_template.cc",
"chars": 2571,
"preview": "#include \"common_dbc.h\"\n\nnamespace {\n\n{% for address, msg_name, msg_size, sigs in msgs %}\nconst Signal sigs_{{address}}["
},
{
"path": "opendbc/can/packer.cc",
"chars": 4033,
"preview": "#include <cassert>\n#include <utility>\n#include <algorithm>\n#include <map>\n#include <cmath>\n\n#include \"common.h\"\n\n#define"
},
{
"path": "opendbc/can/packer.py",
"chars": 82,
"preview": "# pylint: skip-file\nfrom opendbc.can.packer_pyx import CANPacker\nassert CANPacker\n"
},
{
"path": "opendbc/can/packer_pyx.pyx",
"chars": 2217,
"preview": "# distutils: language = c++\n# cython: c_string_encoding=ascii, language_level=3\n\nfrom libc.stdint cimport uint32_t, uint"
},
{
"path": "opendbc/can/parser.cc",
"chars": 8799,
"preview": "#include <cassert>\n#include <cstring>\n\n#include <unistd.h>\n#include <fcntl.h>\n#include <sys/stat.h>\n#include <sys/mman.h"
},
{
"path": "opendbc/can/parser.py",
"chars": 135,
"preview": "from opendbc.can.parser_pyx import CANParser, CANDefine # pylint: disable=no-name-in-module, import-error\nassert CANPar"
},
{
"path": "opendbc/can/parser_pyx.pyx",
"chars": 5428,
"preview": "# distutils: language = c++\n# cython: c_string_encoding=ascii, language_level=3\n\nfrom libcpp.string cimport string\nfrom "
},
{
"path": "opendbc/can/process_dbc.py",
"chars": 4587,
"preview": "#!/usr/bin/env python3\nfrom __future__ import print_function\nimport os\nimport sys\n\nimport jinja2\n\nfrom collections impor"
},
{
"path": "opendbc/chrysler_pacifica_2017_hybrid.dbc",
"chars": 17052,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/chrysler_pacifica_2017_hybrid_private_fusion.dbc",
"chars": 7263,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/ford_fusion_2018_adas.dbc",
"chars": 14069,
"preview": "VERSION \"\"\n\n\nNS_ : \n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/ford_fusion_2018_pt.dbc",
"chars": 4914,
"preview": "VERSION \"\"\n\n\nNS_ : \n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/gm_global_a_chassis.dbc",
"chars": 1581,
"preview": "VERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\tCM_\n\tBA_DEF_\n\tBA_\n\tVAL_\n\tCAT_DEF_\n\tCAT_\n\tFILTER\n\tBA_DEF_DEF_\n\tEV_DATA_\n\tENVVAR_DATA_\n\tSGTY"
},
{
"path": "opendbc/gm_global_a_object.dbc",
"chars": 45166,
"preview": "VERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\tCM_\n\tBA_DEF_\n\tBA_\n\tVAL_\n\tCAT_DEF_\n\tCAT_\n\tFILTER\n\tBA_DEF_DEF_\n\tEV_DATA_\n\tENVVAR_DATA_\n\tSGTY"
},
{
"path": "opendbc/gm_global_a_powertrain.dbc",
"chars": 9351,
"preview": "VERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\tCM_\n\tBA_DEF_\n\tBA_\n\tVAL_\n\tCAT_DEF_\n\tCAT_\n\tFILTER\n\tBA_DEF_DEF_\n\tEV_DATA_\n\tENVVAR_DATA_\n\tSGTY"
},
{
"path": "opendbc/honda_accord_2018_can_generated.dbc",
"chars": 19530,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2018.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_civic_hatchback_ex_2017_can_generated.dbc",
"chars": 19715,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2018.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_civic_sedan_16_diesel_2019_can_generated.dbc",
"chars": 19384,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2018.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_civic_touring_2016_can_generated.dbc",
"chars": 15910,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_crv_ex_2017_body_generated.dbc",
"chars": 465,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\nCM_ \"honda_crv_ex_2017_body.dbc starts here\";\nBO_ 318291879 BSM_STATUS_RIGHT: 8 "
},
{
"path": "opendbc/honda_crv_ex_2017_can_generated.dbc",
"chars": 19945,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2018.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_crv_executive_2016_can_generated.dbc",
"chars": 12372,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_crv_hybrid_2019_can_generated.dbc",
"chars": 19316,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2018.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_crv_touring_2016_can_generated.dbc",
"chars": 12499,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_fit_ex_2018_can_generated.dbc",
"chars": 13526,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_insight_ex_2019_can_generated.dbc",
"chars": 18881,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _bosch_2018.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_odyssey_exl_2018_generated.dbc",
"chars": 14269,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_odyssey_extreme_edition_2018_china_can_generated.dbc",
"chars": 12733,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_pilot_touring_2017_can_generated.dbc",
"chars": 12209,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/honda_ridgeline_black_edition_2017_can_generated.dbc",
"chars": 12015,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _honda_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\t"
},
{
"path": "opendbc/hyundai_kia_generic.dbc",
"chars": 92144,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n EV_DATA_\n ENVVAR_DATA_\n SGTY"
},
{
"path": "opendbc/lexus_ct200h_2018_pt_generated.dbc",
"chars": 18151,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/lexus_is300h_2017_pt_generated.dbc",
"chars": 17157,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\"\n\n\nCM_ \"Imported file _comma.dbc starts here\"\nBO_ 359 STEERING_IPAS_COMMA: 8 IPAS\n "
},
{
"path": "opendbc/lexus_is_2018_pt_generated.dbc",
"chars": 18442,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/lexus_nx300_2018_pt_generated.dbc",
"chars": 18248,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/lexus_nx300h_2018_pt_generated.dbc",
"chars": 18203,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/lexus_rx_350_2016_pt_generated.dbc",
"chars": 18155,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/lexus_rx_hybrid_2017_pt_generated.dbc",
"chars": 18206,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/mazda_2017.dbc",
"chars": 28447,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/nissan_leaf_2018.dbc",
"chars": 8735,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/nissan_x_trail_2017.dbc",
"chars": 9102,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/subaru_forester_2017_generated.dbc",
"chars": 9486,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _subaru_preglobal_2015.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n"
},
{
"path": "opendbc/subaru_global_2017_generated.dbc",
"chars": 12876,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _subaru_global.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_D"
},
{
"path": "opendbc/subaru_outback_2015_generated.dbc",
"chars": 10187,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _subaru_preglobal_2015.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n"
},
{
"path": "opendbc/subaru_outback_2019_generated.dbc",
"chars": 10188,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _subaru_preglobal_2015.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n"
},
{
"path": "opendbc/tesla_can.dbc",
"chars": 39977,
"preview": "VERSION \"\"\n\n\nNS_ :\n\tNS_DESC_\n\tCM_\n\tBA_DEF_\n\tBA_\n\tVAL_\n\tCAT_DEF_\n\tCAT_\n\tFILTER\n\tBA_DEF_DEF_\n\tEV_DATA_\n\tENVVAR_DATA_\n\tSGTY"
},
{
"path": "opendbc/tesla_radar.dbc",
"chars": 78705,
"preview": "VERSION \"\"\n\n\nNS_ : \n\tNS_DESC_\n\tCM_\n\tBA_DEF_\n\tBA_\n\tVAL_\n\tCAT_DEF_\n\tCAT_\n\tFILTER\n\tBA_DEF_DEF_\n\tEV_DATA_\n\tENVVAR_DATA_\n\tSGT"
},
{
"path": "opendbc/toyota_adas.dbc",
"chars": 9407,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/toyota_avalon_2017_pt_generated.dbc",
"chars": 18049,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_camry_hybrid_2018_pt_generated.dbc",
"chars": 18195,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_corolla_2017_pt_generated.dbc",
"chars": 18041,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_highlander_2017_pt_generated.dbc",
"chars": 18053,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_highlander_hybrid_2018_pt_generated.dbc",
"chars": 18064,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_nodsu_hybrid_pt_generated.dbc",
"chars": 20385,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_nodsu_pt_generated.dbc",
"chars": 20037,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_prius_2017_pt_generated.dbc",
"chars": 18363,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_prius_alpha_2017_pt_generated.dbc",
"chars": 18219,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_rav4_2017_pt_generated.dbc",
"chars": 17996,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_rav4_hybrid_2017_pt_generated.dbc",
"chars": 18493,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_sienna_xle_2018_pt_generated.dbc",
"chars": 18052,
"preview": "CM_ \"AUTOGENERATED FILE, DO NOT EDIT\";\n\n\nCM_ \"Imported file _toyota_2017.dbc starts here\";\nVERSION \"\"\n\n\nNS_ :\n NS_DES"
},
{
"path": "opendbc/toyota_tss2_adas.dbc",
"chars": 9656,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "opendbc/vw_mqb_2010.dbc",
"chars": 94323,
"preview": "VERSION \"\"\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n "
},
{
"path": "panda/.gitignore",
"chars": 177,
"preview": "*.pyc\n.*.swp\n.*.swo\n*.o\n*.so\n*.os\n*.d\n*.dump\na.out\n*~\n.#*\ndist/\npandacan.egg-info/\nboard/obj/\nexamples/output.csv\n.DS_St"
}
]
// ... and 1133 more files (download for full content)
About this extraction
This page contains the full source code of the eFiniLan/xnxpilot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1333 files (168.7 MB), approximately 4.3M tokens, and a symbol index with 7481 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.