Commit Graph

211 Commits (ks-refactor-docs)

Author SHA1 Message Date
Kyle Schwarz ab54697745 Device: Retain Device objects between FindAll() calls
FindAll() now retains a list of Devices that have already been created
and returns their existing object instead of a new one.
2022-07-15 16:03:54 -04:00
Paul Hollinsky a928a1d879 Device: Implement Wireless neoVI Stack
This reverts commit cb47065a47.
2022-06-07 13:48:51 +00:00
Paul Hollinsky de3d8bf870 RAD-Jupiter: Add initial support 2022-05-28 14:42:09 -04:00
Paul Hollinsky 55d7d5bf17 Device: Implement allowSleep for Wireless neoVI support 2022-04-26 12:48:17 -04:00
Jonathan Schwartz 44ad06d4bb Device: Add mutex for disk info requests to temporarily work around WiVIClient timeout issues 2022-04-22 17:30:53 +00:00
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
Paul Hollinsky dcc44d99ea Fix an issue where the FIRE could not be opened 2020-06-17 15:11:57 -04:00
Jeffrey Quesnelle d2019c24df reuse discovered pcap interfaces in DeviceFinder::FindAll() 2020-05-11 16:17:56 -04:00
Paul Hollinsky d8798acaa7 Communication: MultiChannel: Properly mask out communication from non-main VNETs
This also makes it possible for Communication to create more instances of Packetizer
This is necessary because Packetizer is not thread safe,
so when we support more VNETs we will need to create more Packetizers.
2020-03-09 13:56:18 -04:00
Paul Hollinsky 9ac3fd56bd FlexRay: Don't check for POCReady when writing configuration
It is not needed and this gives a good speedup to configuration
2020-02-28 20:10:31 -05:00
Paul Hollinsky 8ae3317930 FlexRay: Rework controller register reading for reliability 2020-02-28 20:09:33 -05:00
Paul Hollinsky 1cd817a16b Fix race conditions with Communication::waitForMessageSync 2020-02-28 20:00:08 -05:00
Paul Hollinsky 9fcba2eb13 Notify extensions we're going offline before we actually do 2020-02-28 19:57:43 -05:00
Paul Hollinsky 0c330f734b Fix typo 2020-02-28 19:57:16 -05:00
Paul Hollinsky a2fecb7621 Support for EtherBADGE 2020-02-20 14:43:10 -05:00
Paul Hollinsky 724cc428d9 Properly specify the FlexRay CC registers 2019-11-20 16:24:20 +01:00
Paul Hollinsky 52b0b4c586 Properly set up transmit buffers 2019-11-19 17:07:48 +01:00
Paul Hollinsky 4821a957dd Properly decode incoming FlexRayPackets 2019-11-18 06:09:25 +01:00
Paul Hollinsky 37778d7891 Implement FlexRay transmit, configuration, and cold start 2019-11-12 20:38:47 -05:00
Paul Hollinsky 2f9844df92 Begin work on FlexRay support 2019-10-16 16:43:31 -04:00
Paul Hollinsky 0607986114 Resolve merge conflicts 2019-08-12 11:17:28 -04:00
EricLiu2000 ef16e60025 Added more mutexes in eventmanager, fixed exiting destruction bug 2019-08-07 13:12:16 -04:00
EricLiu2000 9629864f1b Fixed wait check in device online/offline 2019-08-07 10:06:33 -04:00
Jeffrey Quesnelle 781b23c0e7 std::chrono::seconds::duration should just be std::chrono::seconds 2019-08-06 17:35:44 -04:00
EricLiu2000 3358241abe Reordered error downgrading, order of going offline, and renamed locks 2019-08-06 10:32:19 -04:00
EricLiu2000 71176137ca Added waits to ensure going online and offline succeed before returning 2019-08-05 15:35:44 -04:00
EricLiu2000 8c186f00cd Added functionality to set blocking behavior of write 2019-07-24 14:57:06 -04:00
EricLiu2000 69b7e5b45a Device::GetMessages now returns a pair of {vector, bool} instead of vector 2019-07-24 13:40:54 -04:00
EricLiu2000 50dba62a89 Event refactor builds on Windows 2019-06-24 17:59:45 -04:00
EricLiu2000 92368f70a5 Added error checking for polling 2019-06-18 11:38:12 -04:00
EricLiu2000 2b34c82382 Added error checking to Device::getMessages() 2019-06-18 10:34:50 -04:00
EricLiu2000 04a2402925 Added additional documentation 2019-06-14 17:44:01 -04:00
EricLiu2000 a4a42c8704 Reworked updating LEDState to use sendCommand() instead of transmit() 2019-06-14 16:09:19 -04:00
EricLiu2000 28fc98c475 Added icsneo_isMessagePollingEnabled(), removed polling check from transmitting, and disabled error reporting on device destruction 2019-06-14 15:13:22 -04:00
EricLiu2000 b7288edd9a Finished adding error checking 2019-06-13 16:01:35 -04:00
EricLiu2000 8a6073a9cf Transmit and receiving messages now fails properly when the device is closed. Device closes when serial number initialization fails after open. 2019-06-13 16:01:35 -04:00
EricLiu2000 519e64fb17 Added error checking to functions called from Communication 2019-06-13 16:01:35 -04:00
EricLiu2000 a16f2843d8 Added error reporting to idevicesettings 2019-06-13 16:01:35 -04:00
EricLiu2000 965679c370 Added error checking and removed some redundancy from device isOpen() 2019-06-13 16:01:35 -04:00
EricLiu2000 903615dadd Added icsneo_isOpen() functionality 2019-06-13 16:01:35 -04:00
Paul Hollinsky 56d191b438 Add support for RADPluto over USB 2019-05-14 15:29:03 -04:00
Paul Hollinsky 288ff3565e Make sure to close underlying com if we fail to open 2019-05-14 15:20:04 -04:00
Paul Hollinsky 7cf0ec5f4f Rename timestampMultiplier to timestampResolution
We've also decided to leave it out of the message structures since, for most uses going forward, it will not be needed.

Anyone who wants the timestamp resolution can always make the inexpensive device call to get it.
2019-05-06 12:32:04 -04:00
David Rebbe 23c3cc3763 Implemented legacy icsneoGetTimeStampForMsg() function call.
Signed-off-by: David Rebbe <drebbe@intrepidcs.com>
2019-04-05 19:09:52 -04:00
Paul Hollinsky ae78122cbe Add LSFTCAN and SWCAN support 2019-01-22 13:14:28 -05:00
Paul Hollinsky 7e9fbc4959 Basic introspection for device supported networks 2019-01-03 17:00:15 -05:00
Paul Hollinsky 603d532d2d Add support for RADStar2 settings 2018-12-21 20:28:25 -05:00
Paul Hollinsky e124ad28f4 Major improvements to the settings API
* Allow the raw structure to be manipulated from C and Legacy APIs

 * Structure is now split between what's on the device and what's on the client so changes will not be visible from read methods until apply()

 * Allow devices to connect which have slightly different firmware versions than the settings structure
2018-12-21 20:24:11 -05:00
Paul Hollinsky 3488e36f2a Added the ability to get the baudrate for networks 2018-12-10 14:57:43 -05:00
Paul Hollinsky 8a4e33c8df Allow version and supported devices to be printed at runtime 2018-11-20 10:41:42 -05:00
Paul Hollinsky 2ade9116eb Merge branch 'master' of intrepidcs.homeip.net:paulhollinsky/icsneonext 2018-11-20 09:42:29 -05:00