Commit Graph
47 Commits
Author SHA1 Message Date
Refuhr 137508392a fix: multiplexed value display to not jump all around
- feat: now have a array to cache values and always display them in the
  order in the DBC, also keep track of which values are not stale to not
display 0 on init
2026-07-06 16:18:13 +02:00
Leopixelo 37d386f3c9 load all frames when overwrite mode is unchecked 2026-06-08 15:10:57 +02:00
Leopixelo 93a642e3ab set default state of interpretFrames, overwriteDups and filtersPersistDuringClear to true 2026-06-08 15:03:38 +02:00
Daniele Baggio fb6881eeaa settings and render for setUseColorsByCanId 2026-03-18 10:31:22 +01:00
Collin Kidder 39b43ebf38 Switched up the way time stamp formatting is done. Now tracked by an
enum for easier determination. Also changed graphing window to respect
"system clock" style timestamps and display them properly.
2023-03-15 19:50:58 -04:00
Collin Kidder e1f06be6fd Added a setting that allows for limiting the number of bytes per line.
This is useful if you have a 1920x1080 monitor or smaller resolution
but you want to capture 64 byte payloads. The default is 8 bytes but
usually 16 bytes is fine.
2022-12-08 20:35:33 -05:00
Andy Huska 1b41decd20 Custom sender is no longer crashing
There are a TON of explorations I did here, many may be unnecessary, but this is a stake in the ground.

The main issue was the strange queue logic in canconmanager::sendFrame which puts the tx data in the rx
queue so it will show up in the displayed data.  It caused SIGABRT and SIGSEG to show up everywhere.
It is NOT fixed yet, but TX works over the wire you just can't see it in the tableview.

I thought at first it was only when overwrite data was active, so I put in a a pile of changes to keep
frames and filtered frames as two seperate copies of data where frames was always complete and filtered
was only what was seen in the mainwindow.  It made it so the graphing window would work with overwrite
data active which is an improvement.  I wouldn't roll these changes back.  Because of these changes I
had to update the frame sorting code adjust the refresh function in canframemode.cpp

I also thought it was related to UI updates, but its not, that's been confirmed.

I put a mutex around the custom sender tick timer so that the 1ms timer wouldn't re-enter its callback.
This didn't fix the crash, but it sure seems to make a lot of sense, and the way I did it no elasped
time is lost for tracking purposes, and in reality theres no way 1ms was consistent anyway.

I put a mutex around the shrinking of frames and filteredframes to make sure we weren't deleting at
the same time as accessing, but honestly we acccess those lists in many places without semaphores so
that probably did nothing.

Fixed a bug in FrameSenderWindow:DoModifiers that was improperly parsing and sometimes crashing when
looking for the ~ operator before a symbol.

Also added some minor work to keep row expansion functioning when changing filters or sorting.  Need
to make some tweaks so it stops trying so hard when overwrite is not active

Theres also code in main.c taht makes debugging output super verbose.

Committing now to start cleanup
2022-11-01 15:01:07 -05:00
Andy Huska 6fa84df7e0 Added ability to maintain bus and msg filters when clearing frames 2022-09-19 13:31:00 -05:00
Collin Kidder c4a9f99445 Added two modes - millisecond timestamps for frames and a way to
ignore colors set in DBC files
2022-01-19 21:34:49 -05:00
Bertrand ba63a25fe3 added bus filter to main window 2021-02-23 08:10:39 +01:00
Collin Kidder 8beb0e31a0 Converted more code to be easier to generalize to larger CAN payloads
for CAN-FD. Improved some code to be faster. Fixed up some compile
time warnings.
2019-12-15 15:02:06 -05:00
mjuhanne 428b19c5c4 - Save DBC file configuration when changed, and restore it when restarting the application (no need for manual entry everytime app is launched)
- Add GMLAN 29bit filtering feature. In addition to J1939 matching, it is now possible to match DBC messages using only the Arbitration Id (bits 14-26 of CAN Address), since  Priority id (higher bits) and Sender Id (lowest 13 bits) are not relevant when interpreting the CAN message content. This allows to use the excellent GM Global A DBC files on https://github.com/commaai/opendbc. Just remember to select the "GMLAN" matching criteria on DBC File manager.
- Add "Filter labeling" feature. Using loaded DBC files, it matches the filter Ids with DBC messages and shows them in filter windows. Labeling works in the main window (no need to set "Frame interpret" on, since this is a separate feature), as well as in Flow view, Frame data analysis, Playback and Fuzzzing windows. This makes it so much easier to concentrate on those CAN messages that matter. To use this feature, select global "Label filters using messages from DBC files" on Main Configuration page, and then enable the feature on individual DBC files (on DBC file manager) as needed. This is needed if there's overlap in CAN addresses between DBC files, and because the filter labeler cannot tell apart anymore which Filter ID is associated to which bus, it might label them incorrectly. But usually it's ok to just enable the labeling with all the DBC files.
- In Frame data analysis window, in addition to J1939 decoding show also GMLAN (Priority bits, Arbitration Id, Sender Id) decoding.
- FilterUtility static class used for centralized ListWidgetItem creation and for other helper functions
- DBC handler: To allow setting bus numbers even before connection is configured, do not enforce "valid" bus numbers
2019-08-11 23:16:02 +03:00
Nick Kirkby 828733340f #194: new filters default to false if any existing filters are false 2019-06-11 00:22:36 -07:00
Collin Kidder c363059951 Now doing custom sorting for main display. It now actually sorts the
frame list itself which will sort for all windows. Much faster, and
sorts properly for all columns. Also re-added custom display for
timestamp. Still needs to be fixed in Windows.
2019-05-01 20:23:32 -04:00
Collin Kidder 2d01f695e2 Added ability to change time format string for when you're in System
Clock mode. Fixed code so that editing settings in the settings dialog
will now immediately take effect in the program.
2017-07-12 20:02:20 -04:00
Collin Kidder 8830950f85 Addition of "System Time" mode where frames are timestamped by
absolute time from the PC clock.
2017-07-09 16:54:26 -04:00
Collin Kidder 74f6d7f947 Add preliminaries for signal viewer, update version number, switch dbc handler to singleton pattern, changes to DBC attributes 2017-01-15 16:30:08 -05:00
Collin Kidder 7222870b1e Many little fixes to clean up warnings and bugs. 2016-12-29 20:50:02 -05:00
Collin Kidder 0b46f564ab Reorganized source code 2016-12-11 21:06:41 -05:00
Collin Kidder 6a8b20a48e Merge branch 'master' of github.com:collin80/SavvyCAN into WIP2 2016-08-08 15:37:41 -04:00
canpadawan 5162769712 bug fix: use after free 2016-07-08 11:01:53 +02:00
canpadawan 916ed4e657 canframemodel now receives frames from CANConManager 2016-06-29 11:57:52 +02:00
canpadawan fd672de5c5 change a method signature 2016-06-15 18:43:17 +02:00
canpadawan 7165b11399 change slot parameter from pointer to object as the object might have been deallocated when the slot is activated 2016-06-08 11:36:26 +02:00
Collin Kidder 8ab3042283 Tweaks to make compiling possible on 32 bit systems. 2016-06-07 10:58:13 -04:00
Collin Kidder ed238440a4 Stability improvements 2016-03-24 21:19:43 -04:00
Collin Kidder 0ff076de3a Fixed up ability to send frames while not connected and to show frames
that were sent within the same window as received frames. Added a new
scripting window that can be used to create scripts that send and
receive messages at runtime - not done but sort of working.
2015-11-30 20:35:08 -05:00
Collin Kidder 97de959783 Fixed issues with phantom records when filtering the main frame display. Updated version number and required GVRET version since GVRET has had some important fixes recently. 2015-09-14 20:47:05 -04:00
Collin Kidder e1eb1f9ab1 The main screen, flowview, and graphing screens are now linked. If you double click a frame on the main window or a graph in flowview or the graphing window the other two windows will update to show that data as well. 2015-08-23 15:45:56 -04:00
Collin Kidder 54bd2ee587 Updated version number, made it possible to quickly set and unset all filters on main form, added setting to cause sub-forms to use filtered frames instead of all frames 2015-07-12 11:52:02 -04:00
Collin Kidder cc6c8db1fc Fixes to frame capture bugs introduced by last commit. Naughty! 2015-06-30 20:24:16 -04:00
Collin Kidder 46a25cc1e5 Saving of filtered frames now works. Also, saving and loading of main filter list is now implemented. 2015-06-29 22:50:53 -04:00
Collin Kidder 65656b185b Added "time as seconds" mode. It does what it says. This tends to be easier to view. Also added ID based filtering to the main form. This does work and will filter out any IDs you uncheck. Next up, loading and saving the filter list and saving the filtered frames to file. 2015-06-29 22:02:37 -04:00
Collin Kidder ebf3db8a3e The mode to turn off hex display now works for the main frame view. It doesn't work elsewhere. 2015-06-28 20:57:56 -04:00
Collin Kidder 2a06e4fb00 Added an include required for non-windows compiles 2015-06-24 21:29:34 -04:00
Collin Kidder 1af5c10506 Fix to make access of canbus frames const correct. It's now not really possible to modify the captured canbus frames from outside the model class that holds them. This is safer and more future proof.
Boring update but it might save head scratching in the future.
2015-06-24 20:44:38 -04:00
Collin Kidder c14f57c98f Implemented overwrite mode 2015-06-24 19:46:39 -04:00
Collin Kidder 7f17aa8495 Addition of time normalization. Will reset the timing to start at zero and work up from there. 2015-06-23 22:14:48 -04:00
Collin Kidder 06ee0c9301 Added frames per second read out. Fixed some crashes. 2015-05-24 10:10:27 -04:00
Collin Kidder dcbc7ebfed A pretty large shift in how frame reception works in the program. GUI updates are now strictly scheduled and the processor load has been cut to a small fraction of what it was. Program is now stable at any canbus load. 2015-05-23 09:41:12 -04:00
Collin Kidder ae7a301cfb Update the entire program to use QVector. This should make the performance better. Still trying to preallocate enough space for 10,000,000 frames which should be more than plenty. 2015-05-22 23:33:08 -04:00
Collin Kidder 39da1be089 Add version # to window title, additional work on DBC stuff, removed a bunch of debug messages, removed more references to baud. 2015-05-21 21:31:56 -04:00
Collin Kidder 2d989053e7 Removed the *.user file from the index. It doesn't belong being version tracked. Also fixed an extraneous qualifier that didn't mess up on Windows but breaks the compile on OSX. 2015-05-12 18:47:26 -04:00
Collin Kidder b8181e67fc Added two more forms into the program and hooked them up. There is no graphing yet but the form is there. The details pane that was in the graphing screen in GVRET-PC is now its own form and being fleshed out still. 2015-05-02 11:04:24 -04:00
Collin Kidder a29c83e2a7 Added in code to interface with the GVRET firmware on candue or gevcu hardware. 2015-04-28 21:44:31 -04:00
Collin Kidder 6a646cb31b DRASTIC speed up of file loading by not refreshing until the file load is done. Very fast now. 2015-04-27 18:39:48 -04:00
Collin Kidder 1deff8af58 New custom model that somewhat speeds up loading of canbus frame but it's still dog slow. 2015-04-27 18:31:30 -04:00