mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 21:14:01 +08:00
* init * some fixes * move * more * old navd helpers * bring back cereal * fix linting * more * add to cereal first * sp events * lint * implement in long plan * fixme-sp * refactor state machine * wrong state * start refactor controller * some type hints * init these * enable debug print * ui? ui! * print them out * fix spinner import * fix path * let's use gps chips directly for now * service missing * publish events * no nav for now * need to sub * no car state speed yet * missed event * Car: `CarStateSP` * fix tests * bring back car state speed limit * fix * use old controller for now * fix * fix source * type hints * none for now * formatting * more * create directory if does not exist * mypy my bt * policy param catch exceptions * handle all params with exceptions * more * single method * define types in init * rename * simpler op enabled check * more mypy stuff * rename * no need for brake pressed * don't reset if gas pressed * type hint all * type hint all * back to upstream * in another pr * no longer need data type * qlog * slc in another pr * use horizontal accuracy * use horizontal accuracy * set core affinity for all realtime processes * unused * sort * unused * type hint and slight cleanup * from old implementation * use directly * combine pm * slight more cleanup * type hints * even more type hint * Revert "slc in another pr" This reverts commit3a6987e6* Revert "in another pr" This reverts commita29bccff12. * rebump * no need to check alive * use it directly * fix test * refactor * use gps data directly * quote...? * lint * fix tests * use CC.longActive * user confirm in another PR * rename * fix import * params fix * no more * fix * drop new state machine for now * more fixes * internalize output * unused * rearrange * auto draft * rename * this * no * no need * use existing * wrong cruise speed * fix * not used for now * Revert "not used for now" This reverts commitf0083d6241. * some * use frames instead * split speed limit resolver out of slc * no need to pass sm * fix params * test init * use frame instead of time * track session * some tests * too limiting * bump * always reset state * end session if long_active but slc inactive at any given time * off * no warning in this PR * no speed factor engage type yet * wide open * no * introduce disabled, no longer transitions at inactive * fix tests * no more tempinactive * clean * rename * offset default > off * new tests, fixes controller * more tests * not really needed yet * lint * fix * some more tests * wrap * more * more * use vCruiseCluster for set speed * init better * finish it up * no * typo * one method state machine * refactor preactive timeout check * refactor new session check * directly return statuses * comments * v_target * refactor speed limit resolver * turn off debug * more resolver refactor * no longer needed * lint * more lint * fix * move around * fix events * update event * already happens while in enabled * add carstateSP * less * Speed Limit Control -> Speed Limit Assist * in another PR * more rename * overriding state * fix * make sure to return the correct type * just slr in this one * more * update * redundant * fix * fix * lint * fix * fix * match toggle * fix priority checks * fix combined source for picking 0 limit * no need to wrap * add speed limit offset to resolver * add speed limit offset * make sure it displays distance when higher * Revert "make sure it displays distance when higher" This reverts commit15c6834d4e. * some rename * translations * unused for now * more * lint --------- Co-authored-by: nayan <nayan8teen@gmail.com> Co-authored-by: DevTekVE <devtekve@gmail.com>
388 lines
8.3 KiB
Cap'n Proto
388 lines
8.3 KiB
Cap'n Proto
using Cxx = import "./include/c++.capnp";
|
|
$Cxx.namespace("cereal");
|
|
|
|
@0xb526ba661d550a59;
|
|
|
|
# custom.capnp: a home for empty structs reserved for custom forks
|
|
# These structs are guaranteed to remain reserved and empty in mainline
|
|
# cereal, so use these if you want custom events in your fork.
|
|
|
|
# DO rename the structs
|
|
# DON'T change the identifier (e.g. @0x81c2f05a394cf4af)
|
|
|
|
struct ModularAssistiveDrivingSystem {
|
|
state @0 :ModularAssistiveDrivingSystemState;
|
|
enabled @1 :Bool;
|
|
active @2 :Bool;
|
|
available @3 :Bool;
|
|
|
|
enum ModularAssistiveDrivingSystemState {
|
|
disabled @0;
|
|
paused @1;
|
|
enabled @2;
|
|
softDisabling @3;
|
|
overriding @4;
|
|
}
|
|
}
|
|
|
|
struct IntelligentCruiseButtonManagement {
|
|
state @0 :IntelligentCruiseButtonManagementState;
|
|
sendButton @1 :SendButtonState;
|
|
vTarget @2 :Float32;
|
|
|
|
enum IntelligentCruiseButtonManagementState {
|
|
inactive @0; # No button press or default state
|
|
preActive @1; # Pre-active state before transitioning to increasing or decreasing
|
|
increasing @2; # Increasing speed
|
|
decreasing @3; # Decreasing speed
|
|
holding @4; # Holding steady speed
|
|
}
|
|
|
|
enum SendButtonState {
|
|
none @0;
|
|
increase @1;
|
|
decrease @2;
|
|
}
|
|
}
|
|
|
|
# Same struct as Log.RadarState.LeadData
|
|
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;
|
|
radarTrackId @15 :Int32 = -1;
|
|
|
|
aLeadDEPRECATED @5 :Float32;
|
|
}
|
|
|
|
struct SelfdriveStateSP @0x81c2f05a394cf4af {
|
|
mads @0 :ModularAssistiveDrivingSystem;
|
|
intelligentCruiseButtonManagement @1 :IntelligentCruiseButtonManagement;
|
|
}
|
|
|
|
struct ModelManagerSP @0xaedffd8f31e7b55d {
|
|
activeBundle @0 :ModelBundle;
|
|
selectedBundle @1 :ModelBundle;
|
|
availableBundles @2 :List(ModelBundle);
|
|
|
|
struct DownloadUri {
|
|
uri @0 :Text;
|
|
sha256 @1 :Text;
|
|
}
|
|
|
|
enum DownloadStatus {
|
|
notDownloading @0;
|
|
downloading @1;
|
|
downloaded @2;
|
|
cached @3;
|
|
failed @4;
|
|
}
|
|
|
|
struct DownloadProgress {
|
|
status @0 :DownloadStatus;
|
|
progress @1 :Float32;
|
|
eta @2 :UInt32;
|
|
}
|
|
|
|
struct Artifact {
|
|
fileName @0 :Text;
|
|
downloadUri @1 :DownloadUri;
|
|
downloadProgress @2 :DownloadProgress;
|
|
}
|
|
|
|
struct Model {
|
|
type @0 :Type;
|
|
artifact @1 :Artifact; # Main artifact
|
|
metadata @2 :Artifact; # Metadata artifact
|
|
|
|
enum Type {
|
|
supercombo @0;
|
|
navigation @1;
|
|
vision @2;
|
|
policy @3;
|
|
}
|
|
}
|
|
|
|
enum Runner {
|
|
snpe @0;
|
|
tinygrad @1;
|
|
stock @2;
|
|
}
|
|
|
|
struct Override {
|
|
key @0 :Text;
|
|
value @1 :Text;
|
|
}
|
|
|
|
struct ModelBundle {
|
|
index @0 :UInt32;
|
|
internalName @1 :Text;
|
|
displayName @2 :Text;
|
|
models @3 :List(Model);
|
|
status @4 :DownloadStatus;
|
|
generation @5 :UInt32;
|
|
environment @6 :Text;
|
|
runner @7 :Runner;
|
|
is20hz @8 :Bool;
|
|
ref @9 :Text;
|
|
minimumSelectorVersion @10 :UInt32;
|
|
overrides @11 :List(Override);
|
|
}
|
|
}
|
|
|
|
struct LongitudinalPlanSP @0xf35cc4560bbf6ec2 {
|
|
dec @0 :DynamicExperimentalControl;
|
|
longitudinalPlanSource @1 :LongitudinalPlanSource;
|
|
smartCruiseControl @2 :SmartCruiseControl;
|
|
speedLimit @3 :SpeedLimit;
|
|
|
|
struct DynamicExperimentalControl {
|
|
state @0 :DynamicExperimentalControlState;
|
|
enabled @1 :Bool;
|
|
active @2 :Bool;
|
|
|
|
enum DynamicExperimentalControlState {
|
|
acc @0;
|
|
blended @1;
|
|
}
|
|
}
|
|
|
|
struct SmartCruiseControl {
|
|
vision @0 :Vision;
|
|
|
|
struct Vision {
|
|
state @0 :VisionState;
|
|
vTarget @1 :Float32;
|
|
aTarget @2 :Float32;
|
|
currentLateralAccel @3 :Float32;
|
|
maxPredictedLateralAccel @4 :Float32;
|
|
enabled @5 :Bool;
|
|
active @6 :Bool;
|
|
}
|
|
|
|
enum VisionState {
|
|
disabled @0; # System disabled or inactive.
|
|
enabled @1; # No predicted substantial turn on vision range.
|
|
entering @2; # A substantial turn is predicted ahead, adapting speed to turn comfort levels.
|
|
turning @3; # Actively turning. Managing acceleration to provide a roll on turn feeling.
|
|
leaving @4; # Road ahead straightens. Start to allow positive acceleration.
|
|
overriding @5; # System overriding with manual control.
|
|
}
|
|
}
|
|
|
|
struct SpeedLimit {
|
|
resolver @0 :Resolver;
|
|
|
|
struct Resolver {
|
|
speedLimit @0 :Float32;
|
|
distToSpeedLimit @1 :Float32;
|
|
source @2 :Source;
|
|
speedLimitOffset @3 :Float32;
|
|
}
|
|
|
|
enum Source {
|
|
none @0;
|
|
car @1;
|
|
map @2;
|
|
}
|
|
}
|
|
|
|
enum LongitudinalPlanSource {
|
|
cruise @0;
|
|
sccVision @1;
|
|
}
|
|
}
|
|
|
|
struct OnroadEventSP @0xda96579883444c35 {
|
|
events @0 :List(Event);
|
|
|
|
struct Event {
|
|
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
|
|
overrideLateral @10 :Bool;
|
|
overrideLongitudinal @9 :Bool;
|
|
}
|
|
|
|
enum EventName {
|
|
lkasEnable @0;
|
|
lkasDisable @1;
|
|
manualSteeringRequired @2;
|
|
manualLongitudinalRequired @3;
|
|
silentLkasEnable @4;
|
|
silentLkasDisable @5;
|
|
silentBrakeHold @6;
|
|
silentWrongGear @7;
|
|
silentReverseGear @8;
|
|
silentDoorOpen @9;
|
|
silentSeatbeltNotLatched @10;
|
|
silentParkBrake @11;
|
|
controlsMismatchLateral @12;
|
|
hyundaiRadarTracksConfirmed @13;
|
|
experimentalModeSwitched @14;
|
|
wrongCarModeAlertOnly @15;
|
|
pedalPressedAlertOnly @16;
|
|
laneTurnLeft @17;
|
|
laneTurnRight @18;
|
|
}
|
|
}
|
|
|
|
struct CarParamsSP @0x80ae746ee2596b11 {
|
|
flags @0 :UInt32; # flags for car specific quirks in sunnypilot
|
|
safetyParam @1 : Int16; # flags for sunnypilot's custom safety flags
|
|
pcmCruiseSpeed @3 :Bool;
|
|
intelligentCruiseButtonManagementAvailable @4 :Bool;
|
|
|
|
neuralNetworkLateralControl @2 :NeuralNetworkLateralControl;
|
|
|
|
struct NeuralNetworkLateralControl {
|
|
model @0 :Model;
|
|
fuzzyFingerprint @1 :Bool;
|
|
|
|
struct Model {
|
|
path @0 :Text;
|
|
name @1 :Text;
|
|
}
|
|
}
|
|
}
|
|
|
|
struct CarControlSP @0xa5cd762cd951a455 {
|
|
mads @0 :ModularAssistiveDrivingSystem;
|
|
params @1 :List(Param);
|
|
leadOne @2 :LeadData;
|
|
leadTwo @3 :LeadData;
|
|
intelligentCruiseButtonManagement @4 :IntelligentCruiseButtonManagement;
|
|
|
|
struct Param {
|
|
key @0 :Text;
|
|
type @2 :ParamType;
|
|
value @3 :Data;
|
|
|
|
valueDEPRECATED @1 :Text; # The data type change may cause issues with backwards compatibility.
|
|
}
|
|
|
|
enum ParamType {
|
|
string @0;
|
|
bool @1;
|
|
int @2;
|
|
float @3;
|
|
time @4;
|
|
json @5;
|
|
bytes @6;
|
|
}
|
|
}
|
|
|
|
struct BackupManagerSP @0xf98d843bfd7004a3 {
|
|
backupStatus @0 :Status;
|
|
restoreStatus @1 :Status;
|
|
backupProgress @2 :Float32;
|
|
restoreProgress @3 :Float32;
|
|
lastError @4 :Text;
|
|
currentBackup @5 :BackupInfo;
|
|
backupHistory @6 :List(BackupInfo);
|
|
|
|
enum Status {
|
|
idle @0;
|
|
inProgress @1;
|
|
completed @2;
|
|
failed @3;
|
|
}
|
|
|
|
struct Version {
|
|
major @0 :UInt16;
|
|
minor @1 :UInt16;
|
|
patch @2 :UInt16;
|
|
build @3 :UInt16;
|
|
branch @4 :Text;
|
|
}
|
|
|
|
struct MetadataEntry {
|
|
key @0 :Text;
|
|
value @1 :Text;
|
|
tags @2 :List(Text);
|
|
}
|
|
|
|
struct BackupInfo {
|
|
deviceId @0 :Text;
|
|
version @1 :UInt32;
|
|
config @2 :Text;
|
|
isEncrypted @3 :Bool;
|
|
createdAt @4 :Text; # ISO timestamp
|
|
updatedAt @5 :Text; # ISO timestamp
|
|
sunnypilotVersion @6 :Version;
|
|
backupMetadata @7 :List(MetadataEntry);
|
|
}
|
|
}
|
|
|
|
struct CarStateSP @0xb86e6369214c01c8 {
|
|
speedLimit @0 :Float32;
|
|
}
|
|
|
|
struct LiveMapDataSP @0xf416ec09499d9d19 {
|
|
speedLimitValid @0 :Bool;
|
|
speedLimit @1 :Float32;
|
|
speedLimitAheadValid @2 :Bool;
|
|
speedLimitAhead @3 :Float32;
|
|
speedLimitAheadDistance @4 :Float32;
|
|
roadName @5 :Text;
|
|
}
|
|
|
|
struct ModelDataV2SP @0xa1680744031fdb2d {
|
|
laneTurnDirection @0 :TurnDirection;
|
|
}
|
|
|
|
enum TurnDirection {
|
|
none @0;
|
|
turnLeft @1;
|
|
turnRight @2;
|
|
}
|
|
|
|
struct CustomReserved10 @0xcb9fd56c7057593a {
|
|
}
|
|
|
|
struct CustomReserved11 @0xc2243c65e0340384 {
|
|
}
|
|
|
|
struct CustomReserved12 @0x9ccdc8676701b412 {
|
|
}
|
|
|
|
struct CustomReserved13 @0xcd96dafb67a082d0 {
|
|
}
|
|
|
|
struct CustomReserved14 @0xb057204d7deadf3f {
|
|
}
|
|
|
|
struct CustomReserved15 @0xbd443b539493bc68 {
|
|
}
|
|
|
|
struct CustomReserved16 @0xfc6241ed8877b611 {
|
|
}
|
|
|
|
struct CustomReserved17 @0xa30662f84033036c {
|
|
}
|
|
|
|
struct CustomReserved18 @0xc86a3d38d13eb3ef {
|
|
}
|
|
|
|
struct CustomReserved19 @0xa4f1eb3323f5f582 {
|
|
}
|