Commit Graph
157 Commits
Author SHA1 Message Date
RefuhrandClaude Opus 5 2c8f9c6c23 fix: skip saved connections this build cannot create
CanConFactory::create() returns nullptr for a type the platform does not
support, and loadConnections() handed that straight to the model, which
appends it to the connection list unguarded. Every later iteration over that
list then dereferences it.

Reachable by carrying a settings file holding a gs_usb connection from
Windows to another platform, and by any saved type id the factory does not
recognise.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZnuZJ7zc3e8hk6C8bGDZN
2026-08-03 13:12:52 +02:00
RefuhrandClaude Opus 5 3ae429ae48 feat: add gs_usb support on Windows
candleLight, CANable, CANnectivity and cantact adapters speak gs_usb. On
Linux and macOS the kernel driver exposes them as SocketCAN interfaces, so
SavvyCAN already reached them through Qt SerialBus. Windows has no such
driver, which left those adapters unusable there.

Add a GSUSBConnection that talks to the hardware directly over WinUSB:

- one connection per physical device, one SavvyCAN bus per CAN channel
- CAN FD including BRS, plus RTR, extended IDs and error frames
- known good bit timings for 16/48/80/160/170 MHz device clocks, with a
  generic solver for clocks the tables do not cover
- hardware timestamps, unwrapped across the 32 bit rollover and anchored
  to the host clock so they line up with the rest of SavvyCAN

gs_usb multiplexes every channel over a single USB bulk IN endpoint, so a
single reader thread drains it and hands frames to the connection thread in
batches, coalescing the wakeups. That keeps one producer on the lock free
queue, which the tx echo path already writes to.

Device scans skip adapters that a live connection holds. candle_dev_open()
shares the file handle and queues read URBs immediately, so probing a device
in use would consume frames the open connection is waiting for.

connections/candle_api is an unmodified copy of the candle Windows API, LGPL
3.0 rather than MIT and only compiled into Windows builds. See its README for
provenance.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZnuZJ7zc3e8hk6C8bGDZN
2026-07-29 09:25:32 +02:00
Refuhr d3e5eaa9bb feat: reorganize preferences to different tabs 2026-07-07 15:54:05 +02:00
Refuhr 863192ddef feat: add used and unused message ID overview window 2026-07-03 17:40:26 +02:00
Leopixelo 1b77ee8a35 add isotp ascii decoding and autoscroll 2026-06-08 15:13:13 +02:00
Leopixelo 2acbe443ec add support for start date offset 2026-06-08 15:13:13 +02:00
Leopixelo 0e26233dbf change application display name to internal joke 2026-06-08 15:13:13 +02:00
Leopixelo 614f2fef54 implement seeking in playback window and add playback line in graphing view 2026-06-08 15:13:12 +02:00
Leopixelo be077c52fb change default useOrigTiming and status update interval of CAN playback 2026-06-08 15:10:58 +02:00
Leopixelo a2851653e3 add more shortcuts to main window and graphing window 2026-06-08 15:10:58 +02:00
Leopixelo 93a642e3ab set default state of interpretFrames, overwriteDups and filtersPersistDuringClear to true 2026-06-08 15:03:38 +02:00
Collin Kidder 286df56895 Merge branch 'master' of github.com:collin80/SavvyCAN 2026-05-14 21:03:14 -04:00
Collin Kidder bb26f52c3d Add reading of the version map from firmware that shows which files to flash onto a given controller
given its buildid.
2026-05-14 21:01:43 -04:00
Collin Kidder 2be3351e16 Added ability to read buildid which is necessary in order to grab the proper firmware files for the given hardware 2026-05-14 20:33:56 -04:00
Collin Kidder 66e0987113 Add ability to set directory where Tesla firmware is stored, use it to populate fields and allow selection of ECU to flash. 2026-05-14 19:56:07 -04:00
Collin Kidder 035b65243b Remove old custom firmware sender and replace it with AI designed UDS firmware sender. Not tested AT ALL.
Committing merely to give a baseline for further changes
2026-05-13 20:46:53 -04:00
Collin Kidder 927ab49749 Merge pull request #1044 from lexcibien/master
Adding translation to app and Portuguese Brazilian translation
2026-04-15 21:05:04 -04:00
Daniele Baggio fb6881eeaa settings and render for setUseColorsByCanId 2026-03-18 10:31:22 +01:00
lexcibien b86e0369c8 adding a dynamic list for language available and the language list 2026-03-06 22:57:11 -03:00
Collin Kidder 6f69f65444 Merge branch 'master' into support_multiple_signal_multiplex_values 2025-05-05 20:53:25 -04:00
Collin Kidder 6271e52987 Merge pull request #888 from Metaln00b/feature/set-all-button-in-fuzzing
FuzzingWindow: Add buttons to set all high/low/auto
2025-05-05 20:44:52 -04:00
Florian 56fcb23a5e FuzzingWindow: Add buttons to set all high/low/auto 2025-02-03 00:33:11 +01:00
Collin Kidder f2bd1d9d6b Add a save function to ISO-TP decoder window 2024-08-13 20:59:52 -04:00
Collin Kidder c62d88958c Rearrange new graph window so it fits on a 800 pixel tall screen 2024-07-09 20:43:19 -04:00
Collin Kidder 636e849607 Some tweaking to try to make the filters area of the main screen a
little wider
2024-03-18 21:48:27 -04:00
Collin Kidder 47a5aa5085 Sender at bottom of main window is now operational. 2024-02-13 21:52:52 -05:00
Collin Kidder 0c84b6998f Partial implementation of a more generic and multi-threaded version of
the frame sender. Now a simplified interface is attached to the main
window as well. Doesn't necessarily work just yet...
2024-02-12 21:20:54 -05:00
Collin Kidder f4bb8fb6eb Merge pull request #723 from esaulenka/fix/MinorFixes
Several minor fixes
2024-01-25 21:30:29 -05:00
Alexey Esaulenko 43ea48575f Minor: fix Frame Info window layout (same Widget names produced warning during compilation) 2024-01-19 14:58:13 +04:00
Miklos Marton 1dce603325 [DBC]Add support for multiple signal multiplexor values 2024-01-18 16:42:38 +01:00
Charles Galpin 23cd6d9dfe add save as, reload, and save log buttons to scriptingwindow 2023-12-24 10:45:56 -05:00
maciek16c 2bf0782946 CAN-FD 2023-11-22 15:23:38 +01:00
maciek16c 190d51ae90 LAWICEL CAN-FD support, CAN-FD data rate selection 2023-11-22 14:39:36 +01:00
Generoso Cesaro cb2725e6c4 Added canlogserver CAN remote capture 2023-11-17 16:21:38 +01:00
Collin Kidder 310d75761f Add ability to save decoded CSV with absolute timestamp 2023-07-11 21:14:19 -04:00
Andy Huska ab476c746e Added fully qualified dbc, node, and msg searching
...to graphing window and signal viewer so complex systems with message
name duplication (eg "Status") works well.  DBCHandler class has a new
function to find a msg by fully qualified node name...Utility class defines
the qualified name seperator, right now it is :: and is used thusly
filenameNoExtension::nodeName for display in the node dropdown (because
nodes can be common between dbc files).  To get the message from the
system you use the findMessage function in dbchandler and pass the
msgName and the fully qualified node name.  This is about as unique as we
can get, second only to message ID.

Added node comboBox to graph signal editor for easier data filtering
(took the same implementation that was in signal viewer, and tuned up
both of them)
2023-05-17 17:23:27 -05:00
Collin Kidder 1e5f5c7a94 Fixes to UDS Scan window to make it function properly while also
loading/saving successfully
2023-03-20 22:09:39 -04:00
Collin Kidder 51ba7a2e76 Add a new window that can be used to bridge two CAN buses with
selective ID forwarding.
2023-02-22 21:06:23 -05:00
Collin Kidder e0fe807c38 Incremented version number, added mode to playback window to make it
start playback only once traffic starts coming in
2023-02-22 19:09:41 -05:00
Collin Kidder 579957aaa6 Transition yellow color on graphs to a darker tone for better
visibility.
2023-02-16 19:14:37 -05:00
Collin Kidder d0404e0854 Fix inaccurate wording in preferences window 2023-02-13 22:03:26 -05:00
Collin Kidder 4ecffaa76a Changed text in settings window to more clearly explain what the max
frames / prealloc setting does, some other minor bug fixes and extra
comments in code.
2023-02-13 19:17:44 -05:00
Chris Whiteford c6c2869124 Support for getting live data from a CANserver 2023-01-22 11:31:41 -05:00
Collin Kidder 74ec42a720 Add new heatmap mode to CAN data grid widget, put that widget onto
Frame Info Window. Made Frame Info Window able to have the two sides
resized relative to each other
2023-01-15 17:05:43 -05:00
Collin Kidder bbb5c99e78 Reworked the Info Window to use separate graphs for each byte and also
allow dynamic drag based resizing of the two sides of the window
2023-01-15 15:18:35 -05:00
Collin Kidder 9ea3c4746c Fix bitview in Signal Editor on MacOS
MacOS didn't scale the bitfield widget quite the way it was supposed to. The layout has been redesigned to prevent this issue.
2022-12-25 18:16:49 -05:00
Collin Kidder ddf26bb9b8 Fixed tab order in signal editor, fixed bugs in copying a signal when
adding a new signal, code clean up
2022-12-08 21:55:19 -05: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
Collin Kidder 79678af7ba Much more implementation of CANDataGrid for CAN-FD. More or less works
now for both changed bit and signal views. There are still some
graphical tweaks to do. Probably doesn't quite work in fuzzing window
just yet.
2022-12-04 13:15:02 -05:00
Collin Kidder e1c4046bf1 Graphing window now respects bus number. Set to -1 to allow any bus or
to 0 or a positive number to lock a graph to a specific bus.
2022-11-29 21:15:38 -05:00