Repository navigation
Door unlatch controls (Android + iOS) and per-door / trunk status for dashboards - #273
Merged
Merged
Conversation
Four momentary controls on Android and iOS: Unlatch Driver / Passenger / Rear Left / Rear Right Door. Each sends CMD_DOOR_UNLATCH (0x50) with the door index 0-3; gesture values 10-13 let them be bound to multi-finger taps like the other controls. Strings in en/de/hu on both platforms. The firmware (softwiredtech/dashkit-firmware#89, merged) replays the VCSEC_requests 0x1F9 closure request the Tesla app uses and refuses it in R/N/D or while moving; older firmware rejects the opcode as unknown. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…oards The firmware forwards VCLEFT_doorStatus 0x102, VCRIGHT_doorStatus 0x103 and VCLEFT_liftgateStatus 0x142. The shared bridge decodes them into six CarState fields, exposed to web and Rive dash apps on both platforms: - doorOpenFL/FR/RL/RR, trunkOpen: 1 while the latch reports OPENED, OPENING, AJAR or CLOSING; 0 for CLOSED, SNA and the fault states. - trunkPosition: powered liftgate angle in degrees from mux 1, kept across mux-0 frames, clamped at 0 (closed reads slightly negative). bridge: DOOR_OFFSET = 47, FIELD_COUNT = 53; BridgeCarState carries the fields for iOS. Only TeslaDashKitMapper is wired (new_gen_juniper.dbc has no definitions for these messages yet). Android: CarState, CanFrameDecoder, Rive dashValues, WebView getters. iOS: CarState (bridge + Codable), Rive dashValues, WebView JSON. dash-apps: README table, web-compose signals (five warning booleans and the trunk angle), host getter map, en/hu/de labels. Host test tesla_closure_mapper_test covers latch mapping, liftgate mux handling and the array layout. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
VCFRONT_status mux 0 (already forwarded for anyDoorOpen) carries the frunk latch status. Decode it with the same rule as the doors into frunkOpen (0/1; the frunk has no position signal): CarState slot DOOR_OFFSET + 6, FIELD_COUNT = 54, carried through the iOS bridge, both apps, Rive dashValues, the WebView getter / JSON, the web-compose signal catalog and the README. Host test covers mux 0 only and the array slot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ehoeve786
force-pushed
the
door-controls
branch
from
November 8, 2026 15:08
bffa2c8 to
897b0b7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes #272 (closed), rebased on current
mainas three commits: controls, door status, frunk. Pairs with softwiredtech/dashkit-firmware#89 (merged).Controls (Android + iOS): four momentary controls, Unlatch Driver / Passenger / Rear Left / Rear Right Door, sending
CMD_DOOR_UNLATCH(0x50) with the door index 0–3. Gesture values 10–13, so they can be bound to multi-finger taps like the other controls. Strings in en/de/hu on both platforms. The firmware replays theVCSEC_requests0x1F9 closure request the Tesla app uses and refuses it in R/N/D or while moving; older firmware rejects the opcode as unknown.Door status for dashboards: the firmware forwards
VCLEFT_doorStatus0x102,VCRIGHT_doorStatus0x103 andVCLEFT_liftgateStatus0x142. The shared bridge decodes them, plus the frunk latch onVCFRONT_status, into sevenCarStatefields, exposed to web and Rive dash apps on both platforms:doorOpenFL,doorOpenFR,doorOpenRL,doorOpenRRtrunkOpentrunkPositionfrunkOpenVCFRONT_statusmux 0 (already forwarded), same rule; the frunk has no position signalDOOR_OFFSET = 51(after the TPMS block),FIELD_COUNT = 58;BridgeCarStatecarries the same fields for iOS. OnlyTeslaDashKitMapperis wired;new_gen_juniper.dbchas no definitions for these messages yet.CarState,CanFrameDecoder, RivedashValues, WebView gettersgetDoorOpenFL…getTrunkPosition.CarState(bridge + Codable), RivedashValues, WebView JSON.Verification: host tests
tesla_closure_mapper_test(latch mapping, liftgate mux handling, array layout) andtesla_vin_mapper_testpass; the Android debug APK builds. The unlatch request itself was captured and replayed on a 2023 Model Y (see the firmware PR). iOS app not built locally.🤖 Generated with Claude Code