Improve frame info window: timestamps, x-axis range, and per-byte-graph controls#1103
Open
dragz wants to merge 1 commit into
Open
Improve frame info window: timestamps, x-axis range, and per-byte-graph controls#1103dragz wants to merge 1 commit into
dragz wants to merge 1 commit into
Conversation
…ph controls canframemodel.cpp: - Add frameTimestampMicros() helper that combines seconds + microSeconds fields so timestamps spanning more than one second are handled correctly throughout normalizeTiming, recalcOverwrite, addFrame, getIndexFromTimeID, and data(). re/frameinfowindow: - Read time style and format from settings so byte graphs use the same time representation (seconds, millis, clock) as the rest of the application. - Set x-axis ticker and label per time style in setupByteGraph(). - Plot byte graph x-axis using real frame timestamps instead of frame index. - Fix interval calculation to use full seconds+microseconds timestamp. - Set byte graph x-axis range to span the entire capture window (all frames), not just the range where the selected frame ID appears. - Add captureXRange() helper that scans modelFrames for the true min/max timestamp; shared by initial plot setup and reset logic. - Add per-graph ⌂ reset button (lower-left corner overlay) that restores x-axis to full capture range and y-axis to default [0, 265]. - Add per-graph ─/● toggle button (next to reset) to switch between line and scatter dot plots; state persists when switching frame IDs. - Add ⌂ reset-all and ─/● toggle-all buttons in the "Bytes Graph" header. - Position overlay buttons via eventFilter on QEvent::Resize so they track the lower-left corner as the window or splitter is resized. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
SavvyCAN has been a tremendous help in my hobby of reverse engineering the canbus of my car. Please consider this improvement to the frame data analysis window. I'd be happy to adjust it if something is off or not up to par. My C++ is a bit rusty so Claude Code has done the heavy lifting.
Summary
canframemodel.cpptimestamp arithmetic to combineseconds()+microSeconds()fields correctly everywhere, fixing display for captures longer than one second[0, 265]Changes
canframemodel.cppframeTimestampMicros()helper combiningseconds()+microSeconds()so timestamps spanning more than one second are handled correctly throughoutnormalizeTiming,recalcOverwrite,addFrame,getIndexFromTimeID, anddata()re/frameinfowindowcaptureXRange(), which scans all frames for the true min/max timestampeventFilteronQEvent::ResizeTest plan
Screenshot of dot scatter plots.
