Compare commits

..

231 Commits

Author SHA1 Message Date
firestar5683 f7d982fbb4 Connect Galaxy live RoadScore controls to automatic playback 2026-09-22 21:46:19 -05:00
firestar5683 1dfbcffe82 Seek local demo video and music together from timeline slider 2026-09-22 21:09:34 -05:00
firestar5683 407f783a38 Add local Mac demo shortcut and simplify unpaired controls 2026-09-22 21:03:38 -05:00
firestar5683 e9e50cfeb1 Avoid Mac replay and UI publisher port collisions 2026-09-20 13:59:28 -07:00
firestar5683 dda425f7c6 Keep native demo playing through Galaxy status timeouts 2026-09-20 13:28:17 -07:00
firestar5683 9bb2802732 Document separate gold route5 option and audio-first playback 2026-09-20 13:18:12 -07:00
firestar5683 a8e95bd4c7 Add explicit staged music over a verified saved replay 2026-09-20 13:14:17 -07:00
firestar5683 4010fabe8c Let healthy comma audio finish after paired Mac replay exits 2026-09-20 13:13:39 -07:00
firestar5683 cc96be16f6 Give prepared native Bluetooth playback more output headroom 2026-09-20 13:03:55 -07:00
firestar5683 c7e50791b2 Clarify native playback priming and one-way Mac following 2026-09-20 13:03:14 -07:00
firestar5683 920b7af296 Compact exported cue history while preserving audible selection 2026-09-20 13:01:42 -07:00
firestar5683 87c871ca07 Capture saved replay screens only for explicit mirror mode 2026-09-20 12:54:42 -07:00
firestar5683 054d204d4f Record prepared playback callback timing and source clock failures 2026-09-20 12:53:19 -07:00
firestar5683 41a8673e8d Prime saved native replay before starting its source clock 2026-09-20 12:52:10 -07:00
firestar5683 ebfc9d55f0 Clarify audience-facing RoadScore reaction labels 2026-09-20 12:51:50 -07:00
firestar5683 fdd92bc6d1 Document additional saved routes and validation limits 2026-09-20 12:28:53 -07:00
firestar5683 c4732e7f6a Restore recorded turn icon after replay signal override 2026-09-20 12:20:31 -07:00
firestar5683 75c2a8b8a1 Drain verified prepared PCM tails after terminal replay model 2026-09-20 12:08:03 -07:00
firestar5683 f2dbf78a75 Validate final prepared clock residual after bounded recovery 2026-09-20 12:02:35 -07:00
firestar5683 2deecbe21f Finish prepared audio crossfade before bounded DAC correction 2026-09-20 12:01:08 -07:00
firestar5683 3bd12e9262 Document saved demo launch and manual signal override behavior 2026-09-20 11:59:15 -07:00
firestar5683 c883e70ed1 Let manual demo signals replace recorded turn guidance and pulses 2026-09-20 11:57:27 -07:00
firestar5683 1ccc3d7be2 Crossfade bounded Bluetooth DAC estimate reversals in saved playback 2026-09-20 11:54:23 -07:00
firestar5683 562833fe5f Check local replay ownership before starting a paired hardware session 2026-09-20 11:45:56 -07:00
firestar5683 a4f33b01d8 Reserve Mac replay ownership before showcase preparation 2026-09-20 11:45:54 -07:00
firestar5683 4a47400e68 Record complete paired playback and fullscreen validation limits 2026-09-20 11:42:30 -07:00
firestar5683 e076480db8 Document fullscreen controls for native Mac showcase 2026-09-20 11:39:48 -07:00
firestar5683 7fba9b7855 Expose fullscreen on the paired native demo command 2026-09-20 11:38:49 -07:00
firestar5683 fa8c0501b4 Add isolated fullscreen Mac showcase with native aspect ratio 2026-09-20 11:38:30 -07:00
firestar5683 eeffb8ed62 Allow Bluetooth DAC estimate settling during silent clock calibration 2026-09-20 11:34:40 -07:00
firestar5683 f0950133f6 Accept advancing DAC batches with repeated CoreAudio current timestamps 2026-09-20 11:31:09 -07:00
firestar5683 2ff7ed501c Calibrate prepared audio from silent callback timestamps 2026-09-20 11:29:45 -07:00
firestar5683 2bbee419f2 Calibrate native output clock from advancing silent pre-roll callbacks 2026-09-20 11:28:35 -07:00
firestar5683 9f58b3acdd Describe independent native Mac replay and Galaxy synchronization 2026-09-20 11:26:01 -07:00
firestar5683 018283e9b1 Hold and follow isolated muted Mac replay with stable output clock 2026-09-20 11:25:11 -07:00
firestar5683 529047a829 Validate paired route identity and allow owned Mac cleanup to finish 2026-09-20 11:24:17 -07:00
firestar5683 1c76f4916f Coordinate native saved replay on Mac and comma without browser mirroring 2026-09-20 11:23:27 -07:00
firestar5683 c9f102ee47 Anchor output DAC time to a measured stable stream clock 2026-09-20 11:22:59 -07:00
firestar5683 fb43bca7fb Finish owned native demo cleanup despite repeated stop signals 2026-09-20 11:21:25 -07:00
firestar5683 a9698a88be Document validated saved showcase and independent fallback 2026-09-20 11:17:53 -07:00
firestar5683 0d8314fb2b Use native turn prompt wording in replay display 2026-09-20 11:17:14 -07:00
firestar5683 9bad642cae Add bounded fresh-plan Mac song auditions 2026-09-20 11:09:06 -07:00
firestar5683 0fbe1da65e Reserve output while a saved demo is playing 2026-09-20 11:09:06 -07:00
firestar5683 a64c8a7849 Make signal motifs clear and retain existing Galaxy readiness contract 2026-09-20 11:08:20 -07:00
firestar5683 2abbb8d7ed Make optional demo signal motif clearer without bypassing beat checks 2026-09-20 11:07:48 -07:00
firestar5683 71bbdb089f Launch saved paired demo with actual screen mirror and preserve signal cues 2026-09-20 11:06:58 -07:00
firestar5683 8824508b69 Capture opt-in native replay screen on bounded JPEG worker 2026-09-20 11:05:51 -07:00
firestar5683 357db29eb4 Recover bounded prepared audio clock stalls with a short crossfade 2026-09-20 11:00:16 -07:00
firestar5683 93a5378533 Reuse prepared core replay on comma without model startup 2026-09-20 11:00:16 -07:00
firestar5683 0f52f4c70e Guard followed route identity and expose current prepared playhead 2026-09-20 11:00:16 -07:00
firestar5683 0c3a94db23 Follow fresh Galaxy replay controls on the prepared Mac demo 2026-09-20 11:00:16 -07:00
firestar5683 c20f6760d8 Add session-owned saved demo launch and playhead status in Galaxy 2026-09-20 10:55:42 -07:00
firestar5683 17debc8057 Remember explicit paired demo controls and local page port 2026-09-20 10:50:08 -07:00
firestar5683 0fa28bcda1 Deepen disengaged RoadScore containment slightly 2026-09-20 10:44:01 -07:00
firestar5683 99bc1e75ea Place RoadScore badge between native speed groups 2026-09-20 10:35:47 -07:00
firestar5683 0dec20423e Add opt-in paired comma controls to prepared Mac showcase 2026-09-20 10:35:47 -07:00
firestar5683 ebbe0366e6 Verify staged curve cut survives the full presentation stack 2026-09-20 10:34:45 -07:00
firestar5683 02ef51119e Connect prepared Mac showcase and scheduled curve cut-drop treatment 2026-09-20 10:25:55 -07:00
firestar5683 f7f9cf047c Add opt-in asynchronous replay control forwarding helper 2026-09-20 10:23:35 -07:00
firestar5683 4de3e304c0 Record prepared showcase startup and presentation evidence 2026-09-20 10:19:16 -07:00
firestar5683 4d4f1066f6 Add opt-in beat-locked curve build cut and drop presentation 2026-09-20 10:19:16 -07:00
firestar5683 0a4f37fe07 Add interactive local Mac showcase from prepared ACE core 2026-09-20 10:18:02 -07:00
firestar5683 d8d619e420 Stage a measured showcase curve build with a musical bass return 2026-09-20 10:10:02 -07:00
firestar5683 85cd88056b Make replay signal cues audible and strengthen engagement contrast 2026-09-20 10:02:00 -07:00
firestar5683 4b3d4fd5dd Show native steer prompts for isolated replay signal simulation 2026-09-20 10:01:59 -07:00
firestar5683 cd789bb0d0 Allow bounded batches of showcase seed auditions 2026-09-20 09:56:47 -07:00
firestar5683 ac5a4c871c Add verified Mac seed auditions for the native showcase bank 2026-09-20 09:48:55 -07:00
firestar5683 f2ca259cbf Update operator guide for native replay engagement and signal controls 2026-09-20 09:43:31 -07:00
firestar5683 1a3f4bde4e Drive native replay turn arrows and clarify independent simulation resets 2026-09-20 09:40:28 -07:00
firestar5683 a0b239ff38 Connect replay demo engagement and signals to native UI and music 2026-09-20 09:37:21 -07:00
firestar5683 fd33d57163 Keep resident workers from retaining native session lock 2026-09-20 09:30:35 -07:00
firestar5683 0c17953c51 Add independent replay signal controls alongside engagement simulation 2026-09-20 09:26:56 -07:00
firestar5683 366598f66f Document the staged single-route showcase and presenter flow 2026-09-20 09:08:33 -07:00
firestar5683 3935e397c8 Refresh replay demo controls and restore bench device address 2026-09-19 22:33:44 -07:00
firestar5683 aaf5e7208b Add session-bound replay-only musical engagement controls 2026-09-19 22:33:38 -07:00
firestar5683 1c35cd521d Publish replay engagement commands atomically to the audio callback 2026-09-19 22:32:33 -07:00
firestar5683 67445fc009 Add session-scoped replay-only musical engagement simulation 2026-09-19 22:30:46 -07:00
firestar5683 7e2df0f81c Collect actual passive startup flags for observer policy 2026-09-19 22:05:45 -07:00
firestar5683 0f35039b27 Bind passive observer health to real nonactuating evidence and mode identity 2026-09-19 22:05:45 -07:00
firestar5683 803de7b645 Recognize verified passive ELM327 diagnostic startup without waiving faults 2026-09-19 22:05:45 -07:00
firestar5683 bd572108ab Add pinned nonactuating passive observer evidence policy 2026-09-19 22:01:08 -07:00
firestar5683 31be93b22c Accept native false Params values in live model placement check 2026-09-19 21:53:52 -07:00
firestar5683 b108b958bd Update event comma address for the live car connection 2026-09-19 21:46:14 -07:00
firestar5683 4bf6623187 Compare parked evidence timestamps against the cereal boot clock 2026-09-19 21:36:02 -07:00
firestar5683 c24b04aa69 Add bounded read-only parked car evidence collector 2026-09-19 21:36:02 -07:00
firestar5683 95c38b7ace Require modeld runtime GPU flags for local driving placement 2026-09-19 21:32:35 -07:00
firestar5683 3a673caa2a Collect read-only live car health against explicit measured baseline 2026-09-19 21:32:35 -07:00
firestar5683 4e5de2d4d4 Require fresh live playback and explicit verified diagnostic promotion 2026-09-19 21:28:49 -07:00
firestar5683 927245b9c3 Implement persistent live target lifecycle and bounded parked diagnostic 2026-09-19 21:28:49 -07:00
firestar5683 138da36707 Require fresh valid live inputs before starting RoadScore audio 2026-09-19 21:26:23 -07:00
firestar5683 f4ae6f1bf0 Connect Galaxy live toggle to gated owned service with unconditional stop 2026-09-19 21:18:20 -07:00
firestar5683 b24ef8aa6f Keep live playback state unknown when supervisor status fails 2026-09-19 21:18:00 -07:00
firestar5683 ec380c1e59 Add fail-closed live supervisor policy and Galaxy controller boundary 2026-09-19 21:17:25 -07:00
firestar5683 87bc35bc5b Invalidate stale curve payoff labels and process waiting blocks once 2026-09-19 21:06:37 -07:00
firestar5683 87145f595b Integrate live curve contrast and audible reaction labels 2026-09-19 21:06:07 -07:00
firestar5683 270169eedb Gate short startup tests with verified resident buffer handoff 2026-09-19 21:05:06 -07:00
firestar5683 9c7582d73d Add causal curve contrast and shorten warning quantization delay 2026-09-19 21:05:06 -07:00
firestar5683 1f2356b0bc Bound stronger signal shaker to available output headroom 2026-09-19 20:45:23 -07:00
firestar5683 b86a1b9475 Give meaningful warnings bounded beat-locked fill priority 2026-09-19 20:45:05 -07:00
firestar5683 84a3887a34 Prioritize meaningful alerts and enable accepted stop presentation in normal replay 2026-09-19 20:45:05 -07:00
firestar5683 a653ed1c33 Hide lead metrics and stopped timer only in RoadScore replay UI 2026-09-19 20:41:46 -07:00
firestar5683 8c62473e4f Anchor visual music cues to rendered DAC time and version residual offsets 2026-09-19 20:29:36 -07:00
firestar5683 0db08c6c33 Schedule native music cues on audible timestamps with fast atomic status relay 2026-09-19 20:29:36 -07:00
firestar5683 c2da7800fa Render road-video comparisons for stopped-motion presentation 2026-09-19 20:25:09 -07:00
firestar5683 060bf034e2 Treat tiny signed speed noise as stopped during motion presentation 2026-09-19 20:23:09 -07:00
firestar5683 dcab5ca96d Expose stopped-motion candidate through normal presentation selection 2026-09-19 20:15:13 -07:00
firestar5683 c7863cc1d0 Keep native replay display visible through audio drain 2026-09-19 20:14:40 -07:00
firestar5683 cf3042bd1c Publish audio drain completion before replay UI teardown 2026-09-19 20:14:03 -07:00
firestar5683 eb1decf8df Add optional causal stopped-to-moving low-pass lift 2026-09-19 20:13:17 -07:00
firestar5683 e238891d4b Wire stopped-motion presentation into optional normal runtime policy 2026-09-19 20:13:16 -07:00
firestar5683 25311001a9 Avoid visual beat bias during rhythmic audio measurement 2026-09-19 19:50:13 -07:00
firestar5683 4108aae3e8 Refine coarse Bluetooth offset with branch-aware rhythmic taps 2026-09-19 19:49:36 -07:00
firestar5683 af16e5290a Guide coarse chime placement followed by rhythmic timing refinement 2026-09-19 19:48:11 -07:00
firestar5683 ae87804add Extend timing alignment test to three measures 2026-09-19 19:46:40 -07:00
firestar5683 a134503c61 Require complete marker sequence before calibration calculation 2026-09-19 19:39:00 -07:00
firestar5683 5f8c535bc1 Measure Bluetooth tap offsets with isolated irregular markers 2026-09-19 19:38:35 -07:00
firestar5683 2c7f4992bb Guide isolated chime calibration and calculate completed taps automatically 2026-09-19 19:37:23 -07:00
firestar5683 e5e97e7720 Distinguish calibration downbeats with octave-separated clicks 2026-09-19 19:21:50 -07:00
firestar5683 53ccae81d8 Keep calibration taps responsive with direct real Params safety reads 2026-09-19 19:12:11 -07:00
firestar5683 c08dce7dc8 Preserve calibration child failures and expose bounded diagnostics to Galaxy 2026-09-19 19:12:11 -07:00
firestar5683 be635accd4 Keep calibration clock synchronization free of blocking safety checks 2026-09-19 19:05:39 -07:00
firestar5683 c08eb1dc96 Preserve same-origin RoadScore controls through Galaxy tunnel 2026-09-19 18:48:27 -07:00
firestar5683 784a75012f Add two-bar metronome count-in and fullscreen touch or Space calibration 2026-09-19 18:37:11 -07:00
firestar5683 a3031c6d11 Record user accepted demo and preserve baseline before ending changes 2026-09-19 18:22:57 -07:00
firestar5683 c6ac0d4a27 Read Galaxy status from verified current resident ACE worker identity 2026-09-19 18:07:32 -07:00
firestar5683 0ed635026d Apply per-speaker calibration only to displayed music cues 2026-09-19 18:07:32 -07:00
firestar5683 8c954bfe7b Add attended Galaxy Bluetooth timing calibration using exact selected BlueALSA output 2026-09-19 18:07:31 -07:00
firestar5683 1cf81cc950 Record converted playback codec in validation metadata 2026-09-19 18:03:57 -07:00
firestar5683 026655a126 Add verified full-resolution local playback video conversion 2026-09-19 18:03:57 -07:00
firestar5683 01efd58031 Support H264 transport streams in validated playback caches 2026-09-19 17:50:07 -07:00
firestar5683 875ec2ebd0 Select complete validated derived playback caches automatically 2026-09-19 17:49:45 -07:00
firestar5683 cced52e5c4 Recognize H264 road video in prepared local replay caches 2026-09-19 17:47:02 -07:00
firestar5683 e7b3b28849 Add explicit bounded slice threading for software replay decoding 2026-09-19 17:39:47 -07:00
firestar5683 4dcde78413 Record measured warm startup and remaining HD replay blocker 2026-09-19 17:39:14 -07:00
firestar5683 86b6077c8c Expose bounded sanitized receiver failure details in normal launcher 2026-09-19 17:38:37 -07:00
firestar5683 2dc61b6022 Retain segment snapshot while checking startup readiness 2026-09-19 17:28:34 -07:00
firestar5683 45b59daed5 Prime native RoadScore replay before starting its clock 2026-09-19 17:28:21 -07:00
firestar5683 67a7c148b4 Prime native replay camera and initial cache before starting source clock 2026-09-19 17:28:20 -07:00
firestar5683 209796b88c Remove stale unmeasured startup estimate from replay launcher 2026-09-19 17:18:10 -07:00
firestar5683 89613c7c59 Allow authenticated resident handoff past composer availability guard 2026-09-19 17:17:15 -07:00
firestar5683 249eb88b3a Bind dedicated Bluetooth PCM directly instead of late-overridden ALSA defaults 2026-09-19 17:15:40 -07:00
firestar5683 b04995247d Use validated warm native preparation and preserve Bluetooth evidence 2026-09-19 17:15:40 -07:00
firestar5683 19cc31dfcf Route audible native RoadScore to selected Bluetooth output 2026-09-19 17:10:02 -07:00
firestar5683 00904a83b5 Bind process-local BlueALSA output to selected real Bluetooth speaker 2026-09-19 17:09:43 -07:00
firestar5683 41c1db1b13 Show matching native preparation buffer while waiting for replay 2026-09-19 16:58:36 -07:00
firestar5683 e3c425c3cd Allow bounded explicit local startup buffer validation candidate 2026-09-19 16:58:36 -07:00
firestar5683 5b35a5d58d Publish fresh resident preparation identity before sampling 2026-09-19 16:58:36 -07:00
firestar5683 ca2c16b7bc Reject resident audio reuse without session lease opt-in 2026-09-19 16:58:36 -07:00
firestar5683 a23492f627 Add opt-in isolated cached-plan resident session reset 2026-09-19 16:58:35 -07:00
firestar5683 19b8cc33e3 Bind idle resident handoffs to fresh session and conditioning identity 2026-09-19 16:58:35 -07:00
firestar5683 f64f6d150a Bind preparation progress to current worker and launch 2026-09-19 16:49:16 -07:00
firestar5683 7df35a84f6 Record standalone native validation in progress 2026-09-19 16:46:43 -07:00
firestar5683 0c58ea40fa Keep owned native preparation screen awake until playback or failure 2026-09-19 16:46:24 -07:00
firestar5683 0cb88cf9d7 Archive refreshed rhythm timeline provenance 2026-09-19 16:45:44 -07:00
firestar5683 02671ef14c Start late apex breaths smoothly at unity gain 2026-09-19 16:44:29 -07:00
firestar5683 c5fac1e881 Refresh cue timing from each generated passage outside audio callback 2026-09-19 16:44:29 -07:00
firestar5683 a2958ff9f0 Use provisioned native Python from plain onroad shell launch 2026-09-19 16:40:31 -07:00
firestar5683 6ba28be318 Verify cached plans bind actual fresh latent tails in native preparation 2026-09-19 16:38:01 -07:00
firestar5683 211818204b Record first accepted audio and preparation buffer milestones 2026-09-19 16:35:45 -07:00
firestar5683 b5348dd031 Prepare and validate local current-planner bank for fresh standalone native sampling 2026-09-19 16:34:22 -07:00
firestar5683 70d17654b3 Restore persistent launch paths early and preserve native presentation evidence 2026-09-19 16:34:22 -07:00
firestar5683 85850f1fdc Show rendered presentation cues and record recovery checkpoint 2026-09-19 16:34:22 -07:00
firestar5683 9eb394aa23 Accept versioned conservative presentation policy in normal launch 2026-09-19 16:32:43 -07:00
firestar5683 1e64e46113 Bind standalone native sessions to validated current conditioning bank 2026-09-19 16:32:43 -07:00
firestar5683 28902c7d68 Validate archived FLAC without optional imports and anchor visible home badge 2026-09-19 16:32:43 -07:00
firestar5683 0d2d2e0be8 Add sparse beat-aligned alert accents and assess short openings 2026-09-19 16:32:43 -07:00
firestar5683 083314d54d Preserve archived replay origins, audio tails and capture boundaries 2026-09-19 16:29:07 -07:00
firestar5683 97aada4e01 Resolve private local route favorites in normal RoadScore launch 2026-09-19 16:19:31 -07:00
firestar5683 70395cb543 Preserve native render evidence through overlay drawing and audit hidden states 2026-09-19 15:50:55 -07:00
firestar5683 ca9154562d Let Prism hooks vary in length and melodic contour 2026-09-19 15:34:32 -07:00
firestar5683 ed1cafe4e7 Replace stale preparation status when supervised transport exits 2026-09-19 15:31:05 -07:00
firestar5683 16273ef228 Place startup RoadScore badge below home text at bottom right 2026-09-19 15:26:19 -07:00
firestar5683 17d97f92f6 Update event device address for current network 2026-09-19 15:26:19 -07:00
firestar5683 f2a16ec721 Reconnect persistent event assets after checkout replacement 2026-09-19 15:26:19 -07:00
firestar5683 a7551f9df4 Add bounded cold and warm preparation-only comparison command 2026-09-19 14:52:36 -07:00
firestar5683 6995c688db Release unused host diffusion weights in preparation-only service 2026-09-19 14:52:36 -07:00
firestar5683 ffa87f71ca Add reproducible continuation seam retry audition 2026-09-19 14:50:47 -07:00
firestar5683 8462589630 Reject hook continuation leading silence without flattening musical breaks 2026-09-19 14:50:06 -07:00
firestar5683 08f442b98a Update .gitignore 2026-09-19 14:32:02 -07:00
firestar5683 03636629dc Compare revised openings at fixed gain with matched seed and gold reference 2026-09-19 14:25:51 -07:00
firestar5683 9ae89a4cd5 Interleave offline seed checks to surface composition feedback early 2026-09-19 14:19:01 -07:00
firestar5683 d1c4c5ea34 Restore Gold groove language and strong role energy in fresh semantic plans 2026-09-19 14:18:17 -07:00
firestar5683 664156978a Default fresh normal ACE sessions to the 100 W event operating point 2026-09-19 14:11:43 -07:00
firestar5683 2f3f17b0ac Validate fresh hook sessions offline with bounded Mac model residency 2026-09-19 14:10:41 -07:00
firestar5683 04c4638211 Preserve normal demo power, audible status, raw capture and measured mux timing 2026-09-19 14:10:40 -07:00
firestar5683 7ce10a275c Label partial auditions and allow expected assembly crossfades 2026-09-19 14:03:23 -07:00
firestar5683 10b1da6bd6 Add local all-session hook audio review and fault screening 2026-09-19 14:01:03 -07:00
firestar5683 e5f344a04f Isolate semantic planner environment and report preparation-inclusive latency 2026-09-19 14:00:09 -07:00
firestar5683 2b6fd43fa4 Verify completed semantic capture across upstream generation thread boundary 2026-09-19 13:57:43 -07:00
firestar5683 ec51783921 Bind normal RoadScore sessions to causal host semantic plans and native sampling 2026-09-19 13:56:06 -07:00
firestar5683 bad78c6750 Release duplicate Torch diffusion weights before loading host VAE 2026-09-19 13:54:44 -07:00
firestar5683 ea1fb3d230 Load semantic planner before diffusion model to limit initialization peak 2026-09-19 13:51:31 -07:00
firestar5683 9aac0bec15 Discover complete preparation caches for ordinary route replay 2026-09-19 13:49:35 -07:00
firestar5683 634f5f88be Resolve conservative normal presentation without altering frozen cohorts 2026-09-19 13:49:01 -07:00
firestar5683 6bed029ba9 Expose actual rendered cue and engagement state for honest UI 2026-09-19 13:37:03 -07:00
firestar5683 cc291d08bd Refine native RoadScore hierarchy and show only played cues 2026-09-19 13:36:21 -07:00
firestar5683 8d95c0d369 Add session-specific hook planning cache and host adapter contract 2026-09-19 13:34:34 -07:00
firestar5683 42fc6b8573 Add offline cached-route telemetry and pacing inspection tools 2026-09-19 13:31:46 -07:00
firestar5683 299ed93ae3 Specify coherent Prism hook development and isolated host planning 2026-09-19 13:31:46 -07:00
firestar5683 1132379613 Add optional confidence-gated musical presentation candidates 2026-09-19 13:30:59 -07:00
firestar5683 7b6863589b Stabilize RoadScore identity and contextual cue presentation 2026-09-19 13:30:58 -07:00
firestar5683 a6095e614a Separate steering safety warning from rotating wheel bounds 2026-09-19 13:30:58 -07:00
firestar5683 bf252d0ae5 Match native HUD typography and reserve control space for RoadScore 2026-09-19 13:30:58 -07:00
firestar5683 23fc53a5d7 Choose and persist fresh session seeds for normal RoadScore launches 2026-09-19 13:30:37 -07:00
firestar5683 a12d1b7854 Add opt-in unity gold-core ACE rendering mode 2026-09-19 12:42:02 -07:00
firestar5683 aa0846a7b5 Show actual musical road cues and yield score ribbon to native alerts 2026-09-19 11:56:17 -07:00
firestar5683 24db15765d Center score ribbon above camera with native drawn music cues 2026-09-19 11:56:17 -07:00
firestar5683 11530357c9 Replace RoadScore panel with compact camera-edge ribbon 2026-09-19 11:56:17 -07:00
firestar5683 8798b9d94f Integrate full-speed event policy with isolated judging versions 2026-09-19 11:10:41 -07:00
firestar5683 d3ee54e034 Harden judging cache retries and export private integration handoffs 2026-09-19 11:06:54 -07:00
firestar5683 6bfd34eab1 Prepare private community route normalization, caching and blind judging 2026-09-19 11:06:53 -07:00
firestar5683 90ddd700d5 Require frozen policy and ready authorized judging handoffs 2026-09-19 11:06:53 -07:00
firestar5683 f1b79537b8 Fit RoadScore panel to comma four and preserve gesture visibility 2026-09-19 11:06:53 -07:00
firestar5683 e8eae47837 Polish RoadScore overlay states and document the demo 2026-09-19 11:06:53 -07:00
firestar5683 90bd992ced Report partial log corruption in route characterization 2026-09-18 22:49:47 -07:00
firestar5683 31f2d0f612 Add offline route-richness reporting separate from music judging 2026-09-18 22:46:02 -07:00
firestar5683 408f7fb803 Sequence private judging with frozen configuration and fault stops 2026-09-18 22:43:17 -07:00
firestar5683 5d5519e678 Respect submitted time ranges in private judging audits 2026-09-18 22:37:13 -07:00
firestar5683 576211c420 Build anonymous local listening review with fixed excerpt rules 2026-09-18 22:35:59 -07:00
firestar5683 bbd748c5dd Add private single-attempt judging orchestration 2026-09-18 22:34:18 -07:00
firestar5683 963d069778 Make ACE session sampling reproducible for private judging 2026-09-18 22:32:11 -07:00
firestar5683 f75a98181f Record first clean event Chestnut replay and add acceptance audit 2026-09-18 22:28:52 -07:00
firestar5683 0766138ca2 RoadScore 2026-09-19 00:22:33 -05:00
firestarsdog b990a776b2 Curve radial menu corner gradient 2026-09-18 22:26:26 -04:00
firestarsdog 88cbf88756 TV Set 2026-09-18 22:17:55 -04:00
whoisdomi 373c411baa Model Stuff 2026-09-18 19:47:39 -05:00
Prabhaav Pillai 990e68804c fix recording and revert nav tab 2026-09-18 20:04:20 -04:00
firestarsdog b295a57281 mici ux 2026-09-18 18:12:53 -04:00
firestarsdog 673ca37396 Small UI UX 2026-09-18 03:42:24 -04:00
firestar5683 44beb5b778 EV6 2026-09-17 08:33:35 -05:00
firestar5683 00ac287223 EV6 2026-09-17 08:33:10 -05:00
760 changed files with 34341 additions and 3978 deletions
+3
View File
@@ -134,3 +134,6 @@ Pipfile
!rednose_repo/rednose/helpers/ekf_sym_pyx.so
!panda/board/obj/
!panda/board/obj/**
# Private hackathon context and community route submissions
/ROADSCORE_COMMA_HACK_7_CONTEXT.md
Binary file not shown.
-1
View File
@@ -132,7 +132,6 @@ struct OnroadEvent @0xc4fa6047f024e718 {
audioFeedback @97;
bigModelLoading @100;
bigModelFailed @102;
bigModelPending @103;
soundsUnavailableDEPRECATED @47;
stockLkasDEPRECATED @98;
Binary file not shown.
+1 -3
View File
@@ -177,7 +177,6 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"UsbGpuActive", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"UsbGpuCompiled", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"UsbGpuLoading", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"UsbGpuPending", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"UsbGpuPresent", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"Version", {PERSISTENT, STRING}},
@@ -432,7 +431,6 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"HideSpeedLimit", {PERSISTENT, BOOL, "0", "0", 2, SETTINGS_SIMPLE}},
{"HideSteeringWheel", {PERSISTENT, BOOL, "0", "0", 2, SETTINGS_SIMPLE}},
{"HigherBitrate", {PERSISTENT, BOOL, "0", "0", 2, SETTINGS_SIMPLE}},
{"HighwayCorrectionGain", {PERSISTENT, FLOAT, "1.0", "1.0", 3}},
{"HolidayThemes", {PERSISTENT, BOOL, "1", "0", 0, SETTINGS_SIMPLE}},
{"HumanLaneChanges", {PERSISTENT, BOOL, "0", "0", 2, SETTINGS_SIMPLE}},
{"IconPack", {PERSISTENT, STRING, "stock", "stock", 0}},
@@ -578,7 +576,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"PauseAOLOnBrake", {PERSISTENT, BOOL, "0", "0", 1, SETTINGS_SIMPLE}},
{"PauseLateralOnSignal", {PERSISTENT, BOOL, "0", "0", 1, SETTINGS_SIMPLE}},
{"PauseLateralSpeed", {PERSISTENT, FLOAT, "0.0", "0.0", 1, SETTINGS_SIMPLE}},
{"LateralResumeDelay",{PERSISTENT, FLOAT, "0.0", "0.0", 1, SETTINGS_SIMPLE}},
{"LateralResumeDelay", {PERSISTENT, FLOAT, "0.0", "0.0", 1, SETTINGS_SIMPLE}},
{"PedalsOnUI", {PERSISTENT, BOOL, "0", "0", 1, SETTINGS_SIMPLE}},
{"PIPPreviewEnabled", {PERSISTENT, BOOL, "0", "0", 1}},
{"PIPPreviewMask", {PERSISTENT, JSON, "{\"width\":1928,\"height\":1208,\"center_left\":[315,548],\"center_right\":[1571,539],\"crop_size\":580}", "{\"width\":1928,\"height\":1208,\"center_left\":[315,548],\"center_right\":[1571,539],\"crop_size\":580}", 2}},
Binary file not shown.
+6
View File
@@ -3,4 +3,10 @@
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# RoadScore owns its replay/audio lifecycle only when explicitly requested.
for argument in "$@"; do
if [[ "$argument" == "--roadscore" ]]; then
exec "${ROOT_DIR}/roadscore/onroad" "$@"
fi
done
exec "${ROOT_DIR}/scripts/host_tool_runner.sh" onroad "$@"
@@ -441,6 +441,12 @@ def suppress_redundant_gv70_brake_cancel(CP, brake_pressed: bool, lat_active: bo
)
def clear_ioniq_6_torque_when_request_inactive(CP, apply_torque: int, apply_steer_req: bool) -> int:
if CP.carFingerprint == CAR.HYUNDAI_IONIQ_6 and not apply_steer_req:
return 0
return apply_torque
class CarController(CarControllerBase):
def __init__(self, dbc_names, CP):
super().__init__(dbc_names, CP)
@@ -636,6 +642,8 @@ class CarController(CarControllerBase):
if not CC.latActive:
apply_torque = 0
apply_torque = clear_ioniq_6_torque_when_request_inactive(self.CP, apply_torque, apply_steer_req)
# Hold torque with induced temporary fault when cutting the actuation bit
# FIXME: we don't use this with CAN FD?
torque_fault = CC.latActive and not apply_steer_req
@@ -938,8 +946,7 @@ class CarController(CarControllerBase):
CS.stock_lfa_msg if preserve_stock_lfa_status else None,
CS.stock_lkas_msg if preserve_stock_lkas else None,
lka_icon=lka_icon,
longitudinal_active=lfa_longitudinal_active,
v_ego=getattr(getattr(CS, "out", None), "vEgo", None)))
longitudinal_active=lfa_longitudinal_active))
direct_steering_active = ccnc_angle_long and drive_gear and CC.latActive and self.direct_angle_request_allowed and not CS.angle_steering_fault
inactive_steering_angle = float(np.clip(CS.angle_steering_angle,
-self.params.ANGLE_LIMITS.STEER_ANGLE_MAX,
@@ -1026,7 +1033,9 @@ class CarController(CarControllerBase):
left_sound_active=left_warning.sound_active, right_sound_active=right_warning.sound_active,
)
else:
adrv_messages = hyundaicanfd.create_adrv_messages(self.packer, self.CAN, self.frame)
adrv_messages = hyundaicanfd.create_adrv_messages(self.packer, self.CAN, self.frame,
car_fingerprint=self.CP.carFingerprint,
drive_gear=drive_gear)
can_sends.extend(adrv_messages)
# The front radar treats ADAS_DRV's 0x100 broadcast as its host heartbeat
# and stops publishing object tracks when it disappears.
@@ -7,27 +7,33 @@ from opendbc.car.common.conversions import Conversions as CV
from opendbc.car.crc import CRC16_XMODEM
from opendbc.car.hyundai.values import HyundaiFlags, CAR, CANFD_ALT_BUTTONS_RESUME_CAR
# Ioniq 6 EPS damping, matched to the car's own LFA. With the stock ADAS driving, the Ioniq 6 steers
# through LFA (0x12A) and sends ONLY a damping value in LKAS_ALT (0x110 byte 8, Hyundai name
# Damping_Gain); both are scheduled purely on speed (drive 00000b41: no dependence on angle, torque or
# hands). openpilot sent a fixed 100 in LFA and never set LKAS_ALT's, so the EPS got 0 there. The
# breakpoints are the stock medians per 5 mph band (centers) while the stock system is steering,
# rising steadily to 163 (LFA) / 154 (LKAS_ALT) at 85-90 mph. openpilot's highway weave matched the
# stock system at 45-60 mph and grew past it above 60 mph, exactly where the stock damping pulls away.
# Below ~35 mph the previous values are kept (LFA floor 100, LKAS_ALT 0) so low-speed turn tuning
# is untouched. The panda only checks torque/steer_req on these messages, not the damping byte.
_DAMP_MPH = [37.5, 42.5, 47.5, 52.5, 57.5, 62.5, 67.5, 72.5, 77.5, 82.5, 87.5]
IONIQ_6_LFA_DAMP_BP = [mph * CV.MPH_TO_MS for mph in _DAMP_MPH]
IONIQ_6_LFA_DAMP_V = [100., 105., 107., 112., 116., 119., 133., 145., 151., 157., 163.]
IONIQ_6_LKAS_ALT_DAMP_BP = [mph * CV.MPH_TO_MS for mph in [35.0] + _DAMP_MPH[1:]]
IONIQ_6_LKAS_ALT_DAMP_V = [0., 125., 127., 132., 136., 139., 142., 144., 146., 150., 154.]
_adrv_0x51_templates: dict[CAR, bytes] = {}
def get_ioniq_6_damp_factors(v_ego: float) -> tuple[int, int]:
"""(LFA DAMP_FACTOR, LKAS_ALT DAMP_FACTOR) for the Ioniq 6 at this speed."""
lfa = float(np.interp(v_ego, IONIQ_6_LFA_DAMP_BP, IONIQ_6_LFA_DAMP_V))
lkas_alt = float(np.interp(v_ego, IONIQ_6_LKAS_ALT_DAMP_BP, IONIQ_6_LKAS_ALT_DAMP_V))
return int(round(lfa)), int(round(lkas_alt))
def cache_adrv_0x51_template(car_fingerprint: CAR, dat: bytes | None) -> None:
if car_fingerprint != CAR.KIA_EV6:
return
if dat is None:
_adrv_0x51_templates.pop(car_fingerprint, None)
elif len(dat) == 32 and any(dat[3:]):
_adrv_0x51_templates[car_fingerprint] = bytes(dat)
def create_adrv_0x51(packer, CAN, frame: int, car_fingerprint: CAR | None = None, drive_gear: bool = False):
template = _adrv_0x51_templates.get(car_fingerprint)
if template is None:
return packer.make_can_msg("ADRV_0x51", CAN.ACAN, {})
# EV6 MRR30 tracks stop when the ADAS takeover replaces this platform payload with zeros.
dat = bytearray(template)
dat[2] = (template[2] + frame + 1) & 0xFF
dat[3] = (dat[3] & ~0x1) | int(drive_gear)
crc = hkg_can_fd_checksum(0x51, None, dat)
dat[0] = crc & 0xFF
dat[1] = (crc >> 8) & 0xFF
return CanData(0x51, bytes(dat), CAN.ACAN)
def _set_value(msg: bytearray, sig, ival: int) -> None:
@@ -122,7 +128,7 @@ def create_angle_adas_cmd(packer, CAN, apply_angle: float, lat_active: bool, tor
def create_steering_messages(packer, CP, CAN, enabled, lat_active, apply_torque, apply_angle,
lfa_base_values=None, lkas_base_values=None, lka_icon=None,
longitudinal_active=None, v_ego=None):
longitudinal_active=None):
if lka_icon is None:
lka_icon = 2 if enabled else 1
if longitudinal_active is None:
@@ -164,10 +170,6 @@ def create_steering_messages(packer, CP, CAN, enabled, lat_active, apply_torque,
lfa_values["NEW_SIGNAL_2"] = 0
lfa_values["DAMP_FACTOR"] = 100 # can potentially tuned for better perf [3, 200]
if CP.carFingerprint == CAR.HYUNDAI_IONIQ_6 and v_ego is not None and \
not CP.flags & HyundaiFlags.CANFD_ANGLE_STEERING:
lfa_values["DAMP_FACTOR"], lkas_values["DAMP_FACTOR"] = get_ioniq_6_damp_factors(v_ego)
if CP.flags & HyundaiFlags.CANFD_ANGLE_STEERING and CP.flags & HyundaiFlags.CANFD_LKA_STEERING_ALT:
lkas_values["ADAS_StrAnglReqVal"] = apply_angle
lkas_values["LKAS_ANGLE_ACTIVE"] = 2 if lat_active else 1
@@ -814,15 +816,13 @@ def create_fca_warning_light(packer, CAN, frame):
return ret
def create_adrv_messages(packer, CAN, frame, blended_hda2=False):
def create_adrv_messages(packer, CAN, frame, blended_hda2=False, car_fingerprint=None, drive_gear=False):
# messages needed to car happy after disabling
# the ADAS Driving ECU to do longitudinal control
ret = []
values = {
}
ret.append(packer.make_can_msg("ADRV_0x51", CAN.ACAN, values))
ret.append(create_adrv_0x51(packer, CAN, frame, car_fingerprint, drive_gear))
if blended_hda2:
return ret
+16 -1
View File
@@ -2,6 +2,7 @@ import time
# Provenance: portions of HKG angle integration are adapted from sunnypilot/opendbc's
# hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md.
from opendbc.car import get_safety_config, structs, uds
from opendbc.car.hyundai import hyundaicanfd
from opendbc.car.hyundai.hyundaicanfd import CanBus
from opendbc.car.hyundai.values import HyundaiFlags, CAR, CarControllerParams, \
CANFD_UNSUPPORTED_LONGITUDINAL_CAR, \
@@ -391,11 +392,25 @@ class CarInterface(CarInterfaceBase):
skip_disable_ecu = True
if not skip_disable_ecu:
disable_can_recv = can_recv
if CP.carFingerprint == CAR.KIA_EV6 and can_recv is not None:
hyundaicanfd.cache_adrv_0x51_template(CP.carFingerprint, None)
base_can_recv = can_recv
adrv_bus = CanBus(CP).ACAN
def disable_can_recv(*args, **kwargs):
packets = base_can_recv(*args, **kwargs)
for packet in packets or []:
for msg in packet:
if msg.src == adrv_bus and msg.address == 0x51:
hyundaicanfd.cache_adrv_0x51_template(CP.carFingerprint, msg.dat)
return packets
# Try ECU disable. If it succeeds (IGN-ON mode), enable longitudinal.
# If it fails (READY mode returns NRC 0x22, or timeout), strip LONG safety flag
# so panda forwards stock SCC messages normally (lateral-only mode).
ecu_log(f"=== ECU DISABLE attempt: addr=0x{addr:x}, bus={bus} ===")
ecu_disabled = disable_ecu(can_recv, can_send, bus=bus, addr=addr, com_cont_req=communication_control,
ecu_disabled = disable_ecu(disable_can_recv, can_send, bus=bus, addr=addr, com_cont_req=communication_control,
reset=bool(CP.flags & HyundaiFlags.CAN_CANFD_BLENDED))
if CP.carFingerprint in (CAR.HYUNDAI_IONIQ_6, CAR.HYUNDAI_IONIQ_5_PE):
@@ -20,7 +20,8 @@ from opendbc.car.hyundai.carcontroller import CarController, CANCEL_BUTTON_DELAY
should_track_stop_accel_directly_for_car, \
preserve_stock_canfd_lfa_status, \
preserve_stock_canfd_lkas_status, \
suppress_redundant_gv70_brake_cancel
suppress_redundant_gv70_brake_cancel, \
clear_ioniq_6_torque_when_request_inactive
from opendbc.car.hyundai.carstate import CarState, decode_canfd_camera_lead, decode_ioniq_6_blindspot_radar_state, \
get_canfd_cruise_available
from opendbc.car.hyundai.interface import CarInterface, KIA_EV9_ACCEL_MAX, get_communication_control_request
@@ -148,6 +149,60 @@ class TestHyundaiFingerprint:
assert get_communication_control_request(CAR.HYUNDAI_IONIQ_6) == radar_keepalive_request
def test_ev6_adrv_0x51_replays_factory_payload(self):
CP = CarParams.new_message()
CP.carFingerprint = CAR.KIA_EV6
CP.flags = int(HyundaiFlags.CANFD | HyundaiFlags.CANFD_LKA_STEERING | HyundaiFlags.EV)
packer = CANPacker(DBC[CP.carFingerprint][Bus.pt])
can_bus = CanBus(CP)
factory = bytes.fromhex("88ed2e091700ffff5e0d0000012006ff021c2200000000000800000010000000")
hyundaicanfd.cache_adrv_0x51_template(CAR.KIA_EV6, factory)
try:
address, dat, bus = hyundaicanfd.create_adrv_0x51(packer, can_bus, 7, CAR.KIA_EV6, drive_gear=True)
_, parked_dat, _ = hyundaicanfd.create_adrv_0x51(packer, can_bus, 8, CAR.KIA_EV6, drive_gear=False)
_, other_dat, _ = hyundaicanfd.create_adrv_0x51(packer, can_bus, 7, CAR.HYUNDAI_IONIQ_6)
finally:
hyundaicanfd.cache_adrv_0x51_template(CAR.KIA_EV6, None)
assert address == 0x51
assert bus == can_bus.ACAN
assert dat[2] == (factory[2] + 8) & 0xFF
assert dat[3:] == factory[3:]
assert int.from_bytes(dat[:2], "little") == hkg_can_fd_checksum(address, None, bytearray(dat))
assert parked_dat[3] == factory[3] & ~0x1
assert parked_dat[4:] == factory[4:]
assert int.from_bytes(parked_dat[:2], "little") == hkg_can_fd_checksum(address, None, bytearray(parked_dat))
assert other_dat[3:] == bytes(29)
def test_ev6_init_captures_factory_adrv_0x51(self, monkeypatch):
fingerprint = gen_empty_fingerprint()
fingerprint[CanBus(None, fingerprint).CAM][0x50] = 16
radar_config = get_radar_track_config(CAR.KIA_EV6)
fingerprint[radar_config.bus][radar_config.start_addr] = radar_config.expected_length
car_fw = [CarParams.CarFw(ecu=Ecu.adas, fwVersion=b"", address=0x730, brand="hyundai")]
CP = CarInterface.get_params(CAR.KIA_EV6, fingerprint, car_fw, True, False, False, get_test_toggles())
factory = bytes.fromhex("6b657d090900e1ff000000000020ffff00000000000000000800000010000000")
def can_recv(*, wait_for_one=True):
msg = SimpleNamespace(address=0x51, src=CanBus(CP).ACAN, dat=factory)
return [[msg]]
def fake_disable_ecu(capturing_can_recv, *_args, **_kwargs):
capturing_can_recv(wait_for_one=True)
return True
monkeypatch.setattr("opendbc.car.hyundai.interface.disable_ecu", fake_disable_ecu)
CarInterface.init(CP, can_recv, None)
packer = CANPacker(DBC[CP.carFingerprint][Bus.pt])
try:
_, dat, _ = hyundaicanfd.create_adrv_0x51(packer, CanBus(CP), 0, CAR.KIA_EV6, drive_gear=True)
finally:
hyundaicanfd.cache_adrv_0x51_template(CAR.KIA_EV6, None)
assert dat[3:] == factory[3:]
def test_carnival_hev_low_speed_torque_rate_limits(self):
CP = CarInterface.get_params(CAR.KIA_CARNIVAL_HEV_4TH_GEN, gen_empty_fingerprint(), [],
False, False, False, None)
@@ -625,7 +680,14 @@ class TestHyundaiFingerprint:
assert not (CP.flags & HyundaiFlags.CANFD_LKA_STEERING)
assert bool(CP.flags & HyundaiFlags.CANFD_CAMERA_SCC)
def test_palisade_2023_uses_can_canfd_blended_layout(self):
def test_ioniq_6_clears_torque_with_inactive_safety_request(self):
ioniq_6_cp = SimpleNamespace(carFingerprint=CAR.HYUNDAI_IONIQ_6)
other_cp = SimpleNamespace(carFingerprint=CAR.KIA_EV6)
assert clear_ioniq_6_torque_when_request_inactive(ioniq_6_cp, -409, False) == 0
assert clear_ioniq_6_torque_when_request_inactive(ioniq_6_cp, -409, True) == -409
assert clear_ioniq_6_torque_when_request_inactive(other_cp, -409, False) == -409
palisade_2023 = CarInterface.get_params(CAR.HYUNDAI_PALISADE_2023, gen_empty_fingerprint(), [], True, False, False, None)
assert palisade_2023.flags & HyundaiFlags.CAN_CANFD_BLENDED
assert DBC[palisade_2023.carFingerprint][Bus.pt] == "hyundai_palisade_2023_generated"
@@ -1,62 +0,0 @@
import pytest
from opendbc.can import CANPacker, CANParser
from opendbc.car import Bus
from opendbc.car.common.conversions import Conversions as CV
from opendbc.car.structs import CarParams
from opendbc.car.hyundai import hyundaicanfd
from opendbc.car.hyundai.hyundaicanfd import CanBus, get_ioniq_6_damp_factors
from opendbc.car.hyundai.values import CAR, DBC, HyundaiFlags
def _cp(fingerprint):
CP = CarParams.new_message()
CP.carFingerprint = fingerprint
CP.flags = int(HyundaiFlags.CANFD | HyundaiFlags.EV | HyundaiFlags.CANFD_LKA_STEERING |
HyundaiFlags.CANFD_LKA_STEERING_ALT)
CP.openpilotLongitudinalControl = True
return CP
def _damping(fingerprint, v_ego, torque=100):
CP = _cp(fingerprint)
packer = CANPacker(DBC[CP.carFingerprint][Bus.pt])
can_bus = CanBus(CP)
msgs = hyundaicanfd.create_steering_messages(packer, CP, can_bus, True, True, torque, 0.0, v_ego=v_ego)
names = [(packer.dbc.addr_to_msg[addr].name, bus) for addr, _, bus in msgs]
assert names == [("LFA", can_bus.ECAN), ("LKAS_ALT", can_bus.ACAN)]
lfa = CANParser(DBC[CP.carFingerprint][Bus.pt], [("LFA", 0)], can_bus.ECAN)
lfa.update([(1, [msgs[0]])])
lkas = CANParser(DBC[CP.carFingerprint][Bus.pt], [("LKAS_ALT", 0)], can_bus.ACAN)
lkas.update([(1, [msgs[1]])])
assert lfa.can_valid and lkas.can_valid
assert lfa.vl["LFA"]["TORQUE_REQUEST"] == torque
assert lkas.vl["LKAS_ALT"]["TORQUE_REQUEST"] == torque
return lfa.vl["LFA"]["DAMP_FACTOR"], lkas.vl["LKAS_ALT"]["DAMP_FACTOR"], lkas.vl["LKAS_ALT"]["Damping_Gain"]
@pytest.mark.parametrize(("mph", "expected"), [
(10, (100, 0)), # low speed unchanged: previous LFA 100 floor, LKAS_ALT 0
(30, (100, 0)),
(42.5, (105, 125)), # stock medians, 40-45 mph band
(50, (110, 130)), # halfway between the 45-50 (107/127) and 50-55 (112/132) bands
(72.5, (145, 144)), # stock medians, 70-75 mph band
(95, (163, 154)), # held beyond the last breakpoint (85-90 mph band)
])
def test_ioniq_6_damping_schedule(mph, expected):
assert get_ioniq_6_damp_factors(mph * CV.MPH_TO_MS) == expected
def test_ioniq_6_damping_is_encoded_on_both_steering_messages():
lfa, lkas_alt, damping_gain = _damping(CAR.HYUNDAI_IONIQ_6, 72.5 * CV.MPH_TO_MS)
assert (lfa, lkas_alt) == (145, 144)
assert damping_gain == lkas_alt # same bits: Hyundai's name for the LKAS_ALT damping byte
def test_ioniq_6_without_speed_keeps_previous_values():
assert _damping(CAR.HYUNDAI_IONIQ_6, None)[:2] == (100, 0)
def test_other_cars_unchanged():
assert _damping(CAR.HYUNDAI_IONIQ_5, 70 * CV.MPH_TO_MS)[:2] == (100, 0)
@@ -727,14 +727,10 @@ BO_ 1259 LOCAL_TIME2: 8 XXX
SG_ NEW_SIGNAL_3 : 39|1@0+ (1,0) [0|1] "" XXX
BO_ 1264 LOCAL_TIME: 8 XXX
SG_ HOURS : 8|8@1+ (1,0) [0|23] "" XXX
SG_ MINUTES : 16|8@1+ (1,0) [0|59] "" XXX
SG_ SECONDS : 24|8@1+ (1,0) [0|59] "" XXX
SG_ MONTH : 34|4@1+ (1,0) [1|12] "" XXX
SG_ YEAR : 40|8@1+ (1,2000) [2000|2255] "" XXX
SG_ DAY : 48|8@1+ (1,0) [1|31] "" XXX
SG_ HOURS : 12|5@0+ (1,0) [0|31] "" XXX
SG_ MINUTES : 21|6@0+ (1,0) [0|63] "" XXX
SG_ SECONDS : 31|8@0+ (1,0) [0|59] "" XXX
CM_ BO_ 1264 "Cluster wall clock, 1Hz. Local time, not UTC. All 0xFF until the cluster initializes.";
CM_ SG_ 96 BRAKE_PRESSURE "User applied brake pedal pressure. Ramps from computer applied pressure on falling edge of cruise. Cruise cancels if !=0";
CM_ SG_ 101 BRAKE_POSITION "User applied brake pedal position, max is ~700. Signed on some vehicles";
CM_ SG_ 203 ADAS_ActvACISta "ADAS Active AngleControlInterface State";
@@ -964,14 +964,10 @@ BO_ 1259 LOCAL_TIME2: 8 XXX
SG_ NEW_SIGNAL_3 : 39|1@0+ (1,0) [0|1] "" XXX
BO_ 1264 LOCAL_TIME: 8 XXX
SG_ HOURS : 8|8@1+ (1,0) [0|23] "" XXX
SG_ MINUTES : 16|8@1+ (1,0) [0|59] "" XXX
SG_ SECONDS : 24|8@1+ (1,0) [0|59] "" XXX
SG_ MONTH : 34|4@1+ (1,0) [1|12] "" XXX
SG_ YEAR : 40|8@1+ (1,2000) [2000|2255] "" XXX
SG_ DAY : 48|8@1+ (1,0) [1|31] "" XXX
SG_ HOURS : 12|5@0+ (1,0) [0|31] "" XXX
SG_ MINUTES : 21|6@0+ (1,0) [0|63] "" XXX
SG_ SECONDS : 31|8@0+ (1,0) [0|59] "" XXX
CM_ BO_ 1264 "Cluster wall clock, 1Hz. Local time, not UTC. All 0xFF until the cluster initializes.";
CM_ SG_ 96 BRAKE_PRESSURE "User applied brake pedal pressure. Ramps from computer applied pressure on falling edge of cruise. Cruise cancels if !=0";
CM_ SG_ 101 BRAKE_POSITION "User applied brake pedal position, max is ~700. Signed on some vehicles";
CM_ SG_ 203 ADAS_ActvACISta "ADAS Active AngleControlInterface State";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,2 +1,2 @@
extern const uint8_t gitversion[19];
const uint8_t gitversion[19] = "DEV-25df1b90-DEBUG";
const uint8_t gitversion[19] = "DEV-14370fe9-DEBUG";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More