Commit Graph
214 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 1f1861485d refactor: keep the gs_usb option out of non-Windows builds
The radio button was only disabled elsewhere, which advertised a connection
type that platform can never offer. Hide it instead, and guard the gs_usb.h
include so nothing outside Windows reaches for it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZnuZJ7zc3e8hk6C8bGDZN
2026-07-29 16:16:45 +02:00
RefuhrandClaude Opus 5 c39c8660d7 fix: move __stdcall behind the pointer in the candle API
MSVC rejects a calling convention placed before the '*' of a pointer return
type with C2165, so every translation unit including candle.h failed to
compile. MinGW accepts the upstream spelling, which is why the cross build
did not catch this.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZnuZJ7zc3e8hk6C8bGDZN
2026-07-29 11:26:12 +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 d94537d00c feat: add ctrl + r shortcut to reload all connections 2026-07-07 15:41:37 +02:00
Tomasz Dobrowolski 5fa1bb43ef simplify 2026-03-19 11:59:31 +01:00
Tomasz Dobrowolski ee3e2e2712 cleanup 2026-03-18 13:21:54 +01:00
Tomasz Dobrowolski 5e3d6a305d another fix 2026-03-18 13:08:26 +01:00
Tomasz Dobrowolski 1483aab2a7 fix timestamp rollover 2026-03-18 12:36:22 +01:00
Tomasz Dobrowolski 5313faff69 Fix LAWICELL timestamping bug 2026-03-18 11:32:11 +01:00
Collin Kidder 392ab4c7c2 Merge pull request #997 from Citizen07/master
fix: incorrect Extended FD frame DLC byte was used [lawicel]
2026-01-13 20:05:12 -05:00
Heikki Perea 87fbc633d4 fix: timestamp in milliseconds
Lawicel defined the timestamp in milliseconds
2025-10-13 10:47:55 -06:00
Citizen07 d6e3c25d51 Fix index for resizing buildData in readSerialData function 2025-10-09 14:33:31 +00:00
Heikki Perea fd0fca0f45 fix: dynamic timestamp extraction for LAWICEL CAN frames
Fixed timestamp extraction in LAWICEL CAN frames by accounting for the CAN frame type.
2025-10-08 15:36:55 -06:00
b.lebreton affa893f1d Add support for extended can in canlogserver 2025-08-25 09:32:31 +02:00
Collin Kidder e32c16f661 Merge pull request #895 from wernerc11/complete_connection_save
Implemented connection save with speeds and can fd at least for bus 0.
2025-05-05 18:35:22 -04:00
Collin Kidder 192ce4ccd0 Merge pull request #909 from anegrin/timestamp-issue
FIX Issues 878 and 834 - usec overflow (using system clock)
2025-05-05 18:33:38 -04:00
alessandro negrin 4905794926 using proper method 2025-03-29 17:10:50 +01:00
alessandro negrin 2f70a608e3 this was missing 2025-03-29 16:52:34 +01:00
alessandro negrin 49a5b761bc some other timestamps 2025-03-26 19:28:26 +01:00
alessandro negrin b0fba1b6de setting proper system time 2025-03-26 19:09:16 +01:00
werner 60b0e65a18 Implemented connection save with speeds and can fd at least for bus 0. 2025-02-13 20:21:15 +01:00
Joris Pevcevicius a3cdbaf685 Fix device deselection after connecting 2024-07-24 00:04:03 +03:00
Superwofy 6da492f0eb Added/corrected timestamps for LAWICEL protocol.
Fixed System Clock timestamps and added decoding for timestamps coming from the tool.
2024-06-21 12:55:26 +01:00
Collin Kidder df5b427f9f Merge pull request #724 from esaulenka/fix/DebugDuplicates
ConnectionWindow: fix Device Console duplicates
2024-01-25 21:31:04 -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 8aa3659999 ConnectionWindow: declare debug output connection as unique to prevent duplicates 2024-01-19 15:40:00 +04:00
Alexey Esaulenko 2082845d03 SocketCANd: fix memory leak: string can be accessed after object destruction 2024-01-19 15:00:39 +04:00
Alexey Esaulenko 48f62ac41c CANConnection constructor: use correct order of members in the initialization list 2024-01-19 14:59:30 +04:00
Alexey Esaulenko 3dc426a5b8 Access to the CANBus parameters only through setters/getters
Also removed explicit copy constructor, in such trivial cases
compiler can create all needed copy/move stubs automatically
2024-01-19 14:58:30 +04:00
Alexey Esaulenko a6cd2f1baa Update required C++ standard to C++17 (needed by [[fallthrough]] statements) 2024-01-19 14:33:40 +04:00
Collin Kidder d1223f7511 Merge pull request #702 from maciek16c/master
LAWICEL CAN-FD support, CAN-FD data rate selection
2023-12-06 20:32:42 -05:00
Collin Kidder e28235b24f Merge pull request #672 from pasha745/master
Add 3000000 baudrate mode for Lawicel device
2023-12-06 20:28:55 -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
Collin Kidder 7fef6eb49f Merge pull request #679 from rusoku/master
Add support ListenOnly feature for Qt SerialBus plugins
2023-11-20 21:48:47 -05:00
Generoso Cesaro cb2725e6c4 Added canlogserver CAN remote capture 2023-11-17 16:21:38 +01:00
Gediminas Simanskis 20348547a2 added EN_SILENT_MODE into QCanBusDevice::UserKey 2023-10-08 20:00:03 +03:00
Pavel Kurenev 771518c4fb Add 3000000 baudrate mode for Lawicel device 2023-09-29 03:13:56 +03:00
Collin Kidder aada0daf55 Add a fix for GVRET serial devices on MacOS 2023-09-13 20:55:19 -04:00
Pacerino bb1a7623aa Add Extended CAN Bus Frame to SLCAN/LAWICEL 2023-04-28 15:36:57 +02:00
Collin Kidder 0843081cc5 Merge branch 'master' of github.com:collin80/SavvyCAN 2023-04-11 21:16:42 -04:00
Collin Kidder 780e2fb1a2 Several changes suggested in draft pull requests from llange. Fix some
ambiguous places, fix warnings, fix errors when trying to compile with
QT6
2023-04-11 21:15:34 -04:00
Viktor Verebelyi e082c7f651 Fix converting timestamp from MQTT payload 2023-03-28 18:15:32 +01:00
Collin Kidder 8c756a46b2 Change the default canbus speed to 500k which aids in making J2534
devices work out of the box.

A more thorough solution should be implemented later on.
2023-03-20 21:21:12 -04:00
Collin Kidder 7a1d36d856 Merge pull request #590 from diekleinekuh/fix-crash-happening-after-stopping-in-debugger
fix crash when stopping in debugger for too long
2023-02-21 18:27:40 -05:00
diekleinekuh 69c735b689 fix crash when stopping in debugger for too long 2023-02-21 14:55:07 +01:00
diekleinekuh d51c048460 fix rare crash on exit 2023-02-21 14:50:31 +01:00
Chris Whiteford c6c2869124 Support for getting live data from a CANserver 2023-01-22 11:31:41 -05:00
Chris Whiteford 55becb0d58 Clean up the old connection when its replaced by a new one 2023-01-22 11:26:00 -05:00