Commit Graph

156 Commits (v0.3.0-dev)

Author SHA1 Message Date
Paul Hollinsky 2dd91325e6 FirmIO: Initial commit 2022-03-27 18:10:24 -04:00
Paul Hollinsky 008a1620c8 Repo: Normalize source files to LF 2022-03-27 14:40:32 -04:00
Paul Hollinsky 781fc2c034 Drivers: Decouple from devices
This allows us to better implement alternative drivers
for devices, such as for device sharing servers or
talking to CoreMini processors within the same device.
2022-03-27 14:30:31 -04:00
Paul Hollinsky 0ff12300f3 RAD-Gigalog: Rename to RAD-Mars 2022-03-11 10:53:05 -05:00
Paul Hollinsky 0a15adbe91 Disk: Allow mismatched access for Read and Write drivers
This will cause the driver to fall back to the least common
denominator.
2022-03-03 20:29:13 -05:00
Paul Hollinsky 1118428250 Device: Only allow one disk transaction at a time
Most drivers will not gracefully handle more than one transaction
2022-03-03 16:20:51 -05:00
Paul Hollinsky 8aa5bef7dc Disk: Implement Extended Extractor Driver
This is the high speed driver used for RED 2, FIRE 3, and many
of the RAD-family devices.
2022-03-03 00:03:37 -05:00
Paul Hollinsky c314417277 Device: Find the VSA offset for Disk::Access::EntireDisk 2022-02-28 15:55:16 -05:00
Paul Hollinsky f8a46b7196 Device: Add logical disk size accessor 2022-02-28 01:49:50 -05:00
Paul Hollinsky 0dcd950092 Device: Add disk write driver framework
At the moment, no drivers are implemented, so all devices have Access::None.
2022-02-25 01:14:57 -05:00
Paul Hollinsky fe4d5e0c15 Device: Add disk read driver framework
Allow access to the device's logical disk.

At the moment, no drivers are implemented, so all devices have Access::None.
2022-02-25 01:14:57 -05:00
Paul Hollinsky ac7b2d5106 FlexRay: Automatically reconfigure for runtime-added message buffers 2022-02-21 21:40:46 -05:00
Paul Hollinsky 4dbb8f3956 FlexRay: Don't set default key slots to continuous
This way they will come out as NULL frames, which is likely
more appropriate for a default.

This only takes effect if you set a key slot, but then don't
configure a message buffer for it.
2022-02-21 21:40:46 -05:00
Paul Hollinsky eace014494 FlexRay: Don't enforce key slot rules on non-keyslots 2022-02-21 21:40:46 -05:00
Paul Hollinsky 44e48182bf Device: Don't try to deduce lock_guard template parameters
This improves compatibility with older C++ standards
2022-02-14 19:32:12 -05:00
Kyle Johannes 2d1bb381f6 Device: Implement Ethernet PHY MDIO Communication
The following fixups were added during the squash/merge:

Fix formatting in EthPhyMessage and EthPhyRegPacket
Device: Use std::make_shared when creating the EthPHYControl filter
Network: Create NetID String for EthPHYControl
EthPhyRegPacket: Constants in PascalCase
2021-12-08 19:07:07 -05:00
Paul Hollinsky f8b5710a6c Communication: Avoid MessageFilter type punning in waitForMessageSync 2021-12-02 15:00:13 -05:00
Paul Hollinsky df9827fb2c Device: Don't allow suppressDisconnects during a heartbeat request
See the comment block for an explanation
2021-09-20 23:39:45 -04:00
Paul Hollinsky 3764a2e814 Device: Wider tolerance for disconnections 2021-09-20 19:29:57 -04:00
Paul Hollinsky ffe2d34799 Settings: Make getBaudrateFor work for SWCAN and LSFTCAN 2021-06-01 22:40:26 -04:00
Paul Hollinsky bda37e31f3 Support the RAD-Epsilon 2021-05-28 18:10:16 -04:00
Paul Hollinsky 04e7bfd1af Support the neoVI RED 2 2021-05-27 22:47:36 -04:00
Paul Hollinsky 21bc4eeff2 Message: Create a type system so non-frame data can be represented
This change breaks existing code, hence the version bump, but it's
going to be much less error prone going forward.
2021-05-22 01:58:36 -04:00
Paul Hollinsky 9ba7320fd3 MSVC: Fix build warnings 2021-05-05 12:51:52 -04:00
Paul Hollinsky 82113f1a67 Settings: Better handling of the checksum 2021-05-05 02:20:36 -04:00
Paul Hollinsky 595cc36545 Device: Implement version handling 2021-05-05 02:17:38 -04:00
Paul Hollinsky b7c7d4349a Device: Extend open() API for long-running tasks 2021-04-29 19:08:31 -04:00
Paul Hollinsky 0ce52f064b Event: Better error message for USB powered devices 2021-04-29 18:15:56 -04:00
Paul Hollinsky 5733300de6 Extensions: Auto-add linked extensions 2021-04-27 21:12:24 -04:00
Paul Hollinsky 65a6fadd1d Device: Pull out communication close on open error
We don't want to close before calling the extension hooks.
2021-04-27 21:07:36 -04:00
Paul Hollinsky 218648ae5a Extensions: Offer an opportunity to communicate with a dead device 2021-04-23 22:32:42 -04:00
Paul Hollinsky 4cd7bafca7 Device: Allow the suppression of disconnects from extensions 2021-04-23 20:04:02 -04:00
Paul Hollinsky bb322ad190 neoVI FIRE 2: MiscIO and EMiscIO Support 2021-04-21 10:40:35 -04:00
Paul Hollinsky 92589c2ce7 Device: Make IO system thread-safe 2021-04-21 10:04:25 -04:00
Paul Hollinsky e29d63b08c Add Keysight branding where applicable
Because there is now more than one "product name" per device
type, we have a concept of a "generic product name" which
singularly maps onto a device type.

This change comes with a few small breaking changes within
the C++ API:

DeviceType::GetDeviceTypeString has been renamed to
DeviceType::GetGenericProductName to denote that
the returned value is not device specific and
device->getProductName() is preferable.

The member function DeviceType::toString has been renamed
to DeviceType::getGenericProductName for the same reason.

The DeviceType std::ostream& operator<< has been removed
to avoid accidental use of the generic product name.
2021-04-12 19:01:43 -04:00
Paul Hollinsky d79f735df8 Settings: Fix an issue where read errors were not properly reported
Since we were not failing the open for a settings read failure,
any errors would go unnoticed.
2021-04-11 22:37:44 -04:00
Paul Hollinsky e82b5d15e0 Support software controllable termination 2021-04-11 22:13:51 -04:00
Paul Hollinsky 66b0c91cea Settings: Add missing early return on error to getFDBaudrateFor 2021-04-08 15:05:39 -04:00
Paul Hollinsky 7fdae15aed Network: Update DeviceStatus define to match the standard style 2021-04-07 00:38:49 -04:00
Paul Hollinsky a6c8acd8e9 Ethernet (DoIP) Activation Line support 2021-04-06 22:50:25 -04:00
Kyle Schwarz a5b27a15b0 Allow disconnections to be signaled by drivers
This allows for disconnections to be detected quickly
where possible.

It also makes sure other driver errors aren't thrown
in the event of a disconnection.
2020-10-08 17:38:10 -04:00
Paul Hollinsky eda4a30dcd Add ValueCAN 4 Industrial 2020-09-14 12:45:32 -04:00
Paul Hollinsky 8843ace87e ValueCAN 4-2EL: Add communication over Ethernet
The device can communicate with the PC over its Ethernet if the
enablePcEthernetComm setting is set within the structure.

This stops the Ethernet port from being used for vehicle data.
2020-09-14 12:35:43 -04:00
Paul Hollinsky c48efe8e5b Add Gigalog, Gigastar, Moon 2, Moon Duo, and Supermoon
The USB drivers for these devices are currently stubbed, it will find them
but not connect.

The Ethernet drivers work though, where applicable.
2020-09-14 11:57:01 -04:00
Paul Hollinsky a460e27657 Add RADGigalog for Windows
Ethernet communication with device only
2020-09-08 17:55:52 -04:00
Paul Hollinsky 8e999a0fb8 Heartbeat: Break from loop rather than returning
This makes sure we run the cleanup code at the bottom of the thread
2020-09-01 16:32:54 -04:00
Paul Hollinsky 046e2bae9d Ensure proper closure of the heartbeat thread on reopen 2020-09-01 15:52:41 -04:00
Kyle Schwarz 044c2bb86f Detect device disconnects
When a device is sending any traffic, the device is considered to be connected. If no traffic if being received from the device, a status is requested. If the device fails to report the status back in a timely manner, it is considered to be disconnected.

If the device fails to reply to the status request, it is important to confirm that the device is not applying settings. While the device is applying settings, it will not be sending heartbeats or able to process a status request.
2020-08-27 13:20:48 -04:00
Kyle Schwarz 3e4b595fe4 Resolve signedness warnings on GCC 2020-08-18 15:37:05 -04:00
Kyle Schwarz afda617894 Remove trailing white-space 2020-08-11 13:42:13 -04:00