Commit Graph

302 Commits (e02203a9744eddcd971ec5fc15ae6565a76da2b2)

Author SHA1 Message Date
Paul Hollinsky 595cc36545 Device: Implement version handling 2021-05-05 02:17:38 -04:00
Paul Hollinsky 72bc5914a6 EthernetPacket: Allow 1 extra byte at the end of the packet
ValueCAN 4-2EL sends an extra byte to pad the message
to an even byte count.
2021-05-04 23:25:36 -04:00
Paul Hollinsky eca1110305 ValueCAN 4-2EL: Allow the Ethernet network while communicating over it
All frames except for the CAB1/CAB2 communication are reported
2021-05-04 23:08:34 -04:00
Paul Hollinsky b104b34919 Device: Report whether the current driver supports DFU 2021-05-04 22:53:28 -04:00
Paul Hollinsky 805ff4f549 ValueCAN 4-2EL: Device reqires PCAP to enumerate over Ethernet 2021-05-04 22:39:33 -04:00
Paul Hollinsky 78e3eb18df Drivers: Rename STM32 to CDC ACM
This is much more descriptive of what the driver actually is
2021-05-04 22:37:16 -04:00
Paul Hollinsky 6d22b1e001 POSIX: STM32: Check re-enumeration by inode
This is much more stable than waiting for a set amount of time
We still timeout at 5s, if we see that being hit it can be increased
2021-05-04 22:22:30 -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 622c5ee57a POSIX: STM32: Handle re-enumeration when changing modes 2021-04-27 21:12:59 -04:00
Paul Hollinsky 5733300de6 Extensions: Auto-add linked extensions 2021-04-27 21:12:24 -04:00
Paul Hollinsky f8355df770 Communication: Block destruction while inside redirectionFn 2021-04-23 22:33:32 -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 6c1cbc9db8 Optional: Move optional-lite to the include/third-party directory
This fixes the use case of adding the include folder
manually to an outside project.
2021-04-23 20:01:53 -04:00
Paul Hollinsky 55ca6adee6 Communication: Allow redirection of reads 2021-04-23 17:00:37 -04:00
Paul Hollinsky 4b12d3aa4d EventCallback: Convert indentation to tabs 2021-04-22 13:29:56 -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 3b6b4f0541 C API: Expose icsneo_getNetworkByNumber 2021-04-12 20:20:48 -04:00
Paul Hollinsky 40be68e744 C API: Add typedefs for neonetid_t and neonettype_t 2021-04-12 20:20:07 -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 e82b5d15e0 Support software controllable termination 2021-04-11 22:13:51 -04:00
Paul Hollinsky 9ba21d5dc7 C API: Digital IO function use stdbool.h
This requirement is already in place and makes the API more consistent
2021-04-11 20:54:59 -04:00
Paul Hollinsky eb5a84132a EtherBADGE: Device only has one CAN channel 2021-04-08 15:51:56 -04:00
Paul Hollinsky 7fdae15aed Network: Update DeviceStatus define to match the standard style 2021-04-07 00:38:49 -04:00
Paul Hollinsky adb972b1f7 Network: Fix defines for C API 2021-04-07 00:35:08 -04:00
Paul Hollinsky 441b16e9a1 Network: Add CoreMini Mappings
These are used for network and termination enables
2021-04-07 00:30:54 -04:00
Paul Hollinsky cf8c5a31c7 I2C: Add as type and fix network definitions
The first I2C was mysteriously missing, it is here now.

In addition, I2C support will soon be requested so it has been
given its own type.
2021-04-07 00:23:29 -04:00
Paul Hollinsky a6c8acd8e9 Ethernet (DoIP) Activation Line support 2021-04-06 22:50:25 -04:00
Paul Hollinsky 4e245db94e ValueCAN 4-2EL: Fix wrong structure used in settings
The old structure lined up with the correct one, so the wrong
way did work, but it was just by sheer luck.
2021-04-06 18:03:41 -04:00
Paul Hollinsky 4a1d0382f2 ThirdParty: Add optional-lite polyfill
Thanks to all who have made contributions to
https://github.com/martinmoene/optional-lite
2021-04-06 18:01:26 -04:00
Paul Hollinsky 18394d0cfb Add transmit support for ISO 9141-2 2021-03-23 17:23:55 -04:00
Paul Hollinsky 4bca43028c EthernetPacketizer: Resolve warnings 2021-03-23 14:36:10 -04:00
Jeffrey Quesnelle 7f27b30954 Make icsneo::Plasion::GetSupportedNetworks public 2021-02-26 10:38:38 -05:00
Paul Hollinsky f63c187ed3 Add receive support for ISO 9141-2 2021-02-18 23:19:33 -05:00
Paul Hollinsky 4d655da69d Decoder: 64-bit shift to avoid UB
Shifting a value by more than the size of its type is UB.

This was actually causing mangled serial numbers with
optimization on using Clang 12 on Linux.
2021-01-29 17:32:07 -05:00
Kyle Schwarz ffbb5e20c5 Add description field for messages
Closes https://github.com/intrepidcs/libicsneo/issues/28
2020-11-13 16:15:04 -05: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 66d7c2f390
Merge pull request #25 from pierreluctg/icsneolegacy-setFDBitRate
Adding icsneoSetFDBitRate api to the icsneolocacy
2020-09-23 12:36:23 -04:00
Pierre-Luc Tessier Gagne 90b04f4578 Adding icsneoSetFDBitRate api to the icsneolocacy 2020-09-23 07:23:17 -04:00
Paul Hollinsky 6f0654c336 Windows: PCAP: Rework for Ethernet Packetizer and Performance 2020-09-22 19:22:40 -04:00
Paul Hollinsky 76619e2496 RAD-Galaxy: RJ45 Ethernet Support
The "Ethernet" network must be enabled in neoVI Explorer.
It is disabled by default.

This network corresponds with the port labeled DAQ on
the Galaxy.
2020-09-22 19:20:56 -04:00
Paul Hollinsky 28b35a8243 Communication: Create EthernetPacketizer
This code previously was separately maintained in each of the
PCAP driver layers.

While adding complexity for reassembly, I decided it was
time to pull it out into a common implementation.

As of this commit, the old implementations have not been
removed from the PCAP drivers yet.
2020-09-22 19:15:24 -04:00
Paul Hollinsky 5c18bedf70 RAD-Gigalog: Fix serial number prefix 2020-09-18 16:38:09 -04:00
Paul Hollinsky eda4a30dcd Add ValueCAN 4 Industrial 2020-09-14 12:45:32 -04:00
Paul Hollinsky 211f844f77 ValueCAN 4-2EL: Fix device agnostic CAN settings 2020-09-14 12:36:19 -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 d2676afa11 Update device names for consistency 2020-09-14 11:58:34 -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 9dc4b302ef POSIX: PCAP: Enable if permissions are set, with a warning otherwise
On Linux, raw packet capture requires CAP_NET_RAW (or root).

If we can't capture raw packets, we will not be able to find/connect to
devices over ethernet.
2020-09-14 11:51:15 -04:00
Paul Hollinsky a460e27657 Add RADGigalog for Windows
Ethernet communication with device only
2020-09-08 17:55:52 -04:00
Paul Hollinsky eaa1409af0 Update/add settings structures for several devices 2020-09-08 17:41:47 -04:00
Paul Hollinsky de0c16a461 VividCAN: Better "Online Not Supported" Error 2020-09-08 17:39:47 -04:00
Paul Hollinsky 3f8ed840ba Start callback IDs at 1 so 0 is reserved 2020-09-08 17:38:38 -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 b6692d3762 Add missing C++ guards 2020-08-18 16:01:51 -04:00
Kyle Schwarz 4cd897badd Fix deadlock with Driver::write
Use a spin lock to recheck the queue size until it has room to push.
2020-08-14 16:57:52 -04:00
Kyle Schwarz afda617894 Remove trailing white-space 2020-08-11 13:42:13 -04:00
Kyle Schwarz 1d286be1e4 Switch PLUTO_MAX_MAC_CONFIG_ENTRIES to C API define 2020-08-10 15:50:29 -04:00
Kyle Schwarz 6638cf05ae Use C++11 constexpr instead of define 2020-08-10 15:21:16 -04:00
Kyle Schwarz d58202dfc0 Add RADPlutoSettings to initializer template call 2020-08-10 15:07:12 -04:00
Kyle Schwarz 08928c36e3 RADPluto uses HSCAN2 instead of MSCAN 2020-08-10 14:31:59 -04:00
Kyle Schwarz 3123cbb54b Merge branch 'master' of Lustra:InfiniteWalrus/libicsneo into radpluto 2020-08-10 11:11:38 -04:00
Kyle Schwarz 17ebba3c57 Fix line-endings and include guard 2020-08-10 10:40:40 -04:00
Kyle Schwarz 7b3782cbe7 Update concurrentqueue to 1.0.2
1.0.2 resolves compiler warnings for MSVC 2019 with C++17 support (9cfda6cc61)
2020-08-10 10:20:00 -04:00
Kyle Schwarz f9ff4049f2 Add initial support for RADPluto settings 2020-08-07 17:13:08 -04:00
Paul Hollinsky 2079037ae4 POSIX FTDI: Nicer error message for when device is in use
Commonly, the device is being used by another libicsneo program
(icsscand, maybe) or passed through to a VM.
2020-06-24 22:15:22 -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 8f6ff86448 Load pcap_sendqueue functions on Windows 2020-06-12 13:55:47 -04:00
Jeffrey Quesnelle d2019c24df reuse discovered pcap interfaces in DeviceFinder::FindAll() 2020-05-11 16:17:56 -04:00
Jeffrey Quesnelle 99879c9021 turn PCAPDLL into a singleton 2020-03-24 13:15:26 -04:00
Paul Hollinsky 38e24d7641 Refactor ICommunication/Transport => Driver 2020-03-09 14:09:27 -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 42780dc610 Add ReaderWriterQueue and update ConcurrentQueue 2020-03-09 13:38:14 -04:00
Paul Hollinsky 1cd817a16b Fix race conditions with Communication::waitForMessageSync 2020-02-28 20:00:08 -05:00
Paul Hollinsky a2fecb7621 Support for EtherBADGE 2020-02-20 14:43:10 -05:00
Paul Hollinsky ef34959c91 STM32 device finder for Darwin 2020-02-14 23:18:34 -05:00
Paul Hollinsky 4821a957dd Properly decode incoming FlexRayPackets 2019-11-18 06:09:25 +01:00
Paul Hollinsky 31062dd928 For now, assume VNET Z is in coldstart mode 2019-11-12 20:48:30 -05:00
Paul Hollinsky 37778d7891 Implement FlexRay transmit, configuration, and cold start 2019-11-12 20:38:47 -05:00
Paul Hollinsky 3396f5dcce Refining the FlexRay API 2019-11-09 15:34:58 -05:00
Paul Hollinsky f0582697a6 Clarify FlexRay Slot ID 2019-11-01 14:48:14 -04:00
Jeffrey Quesnelle 423f854682 fix MSVC build errors and warnings 2019-10-16 23:56:49 -04:00
Paul Hollinsky eb856dffec Quiet down warnings on Windows 2019-10-16 17:43:11 -04:00
Paul Hollinsky 2f9844df92 Begin work on FlexRay support 2019-10-16 16:43:31 -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
EricLiu2000 3358241abe Reordered error downgrading, order of going offline, and renamed locks 2019-08-06 10:32:19 -04:00
EricLiu2000 01c62b6445 Replaced formal parameter filter in addmessagecallback and addeventcallback 2019-08-06 10:31:08 -04:00
EricLiu2000 4a81b9443a Changed getpollingmessagelimit to return an int 2019-08-05 17:25:09 -04:00
EricLiu2000 9b3d36c8c1 Moved calling of event callbacks to after the event is added. Now using unique_locks on the list of events to allow event callbacks to safely modify the list of events 2019-08-05 11:40:17 -04:00
EricLiu2000 9040edc25d Added event callback functionality in icsneoc 2019-08-02 16:32:15 -04:00
EricLiu2000 4f735a651c Added event callback functionality. EventManager now uses multiple mutexes to lock events, errors, callbacks, and downgradedThreads separately. Wrote single-threaded test for event callbacks. 2019-08-02 15:00:31 -04:00
EricLiu2000 453f098cdb Added check to see if message polling is enabled before disabling it in device destructor 2019-08-01 14:08:12 -04:00
EricLiu2000 055cae1232 Removed radpluto override of setupDecoder() in order to fix timestamp 2019-08-01 13:40:38 -04:00
EricLiu2000 8516a9c8bd Added placeholder void* filter parameter to icsneo_addMessageCallback and added more documentation for message callback functions 2019-07-30 14:02:34 -04:00
EricLiu2000 c10224002a Added message callback functionality in c and canceled error downgrading on user callbacks in communication as well 2019-07-30 10:22:27 -04:00
EricLiu2000 5a98bac8a6 Standardized int-returning functions in icsneoc library to return -1 on failure. Updated icsneolegacy accordingly, and added headers for message callback functionality in c 2019-07-29 16:08:54 -04:00
EricLiu2000 54b98ec9b4 Error downgrading now uses a map<threadid, bool>, and error downgrading is canceled during message callbacks 2019-07-29 15:16:35 -04:00
Paul Hollinsky 511a724252 POSIX FTDI: Improve performance by setting the latency timer 2019-07-26 17:46:24 -04:00
EricLiu2000 b75536c4a2 Updated some documentation in eventmanager to reflect chronological pruning of events 2019-07-26 13:34:03 -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 6f8d307850 Implemented thread specific error-downgrading to events and wrote corresponding unit test 2019-07-24 12:52:15 -04:00
EricLiu2000 199bd2b144 Reverted refactor changes to icsneolegacy.h 2019-07-23 17:16:27 -04:00
Paul Hollinsky 77eed8f58d Revise documentation for icsneo_getLastError 2019-07-23 15:03:43 -04:00
EricLiu2000 69a7b9bc2d Removed casts in network.h constants for SWIG compatibility 2019-07-17 16:36:40 -04:00
EricLiu2000 42690d1f9a Updated documentation, added multithreaded test with both events and errors for eventmanager 2019-06-28 11:11:58 -04:00
EricLiu2000 e3517767cb Events are now removed purely in chronological order if overflowing 2019-06-27 18:04:59 -04:00
EricLiu2000 a4ddd24a50 Added functionality for filtering by both type and severity. Wrote tests for eventmanager::get 2019-06-27 17:04:07 -04:00
EricLiu2000 baa9404432 Went back to normal mutex because I forgot I reverted those 2019-06-27 16:02:31 -04:00
EricLiu2000 1d3b3359ca Wrote more tests, fixed bug with eventmanager::get(size), optimized eventmanager adding and shrinking, prevented trying to add TooManyEvents 2019-06-27 15:50:22 -04:00
EricLiu2000 d0c6aba0fc Revert "Changed list of events to vector, switched back to using lock_guard instead of shared/unique_locks"
This reverts commit 2dac03b3e5.
2019-06-27 14:16:36 -04:00
EricLiu2000 2dac03b3e5 Changed list of events to vector, switched back to using lock_guard instead of shared/unique_locks 2019-06-27 13:42:02 -04:00
EricLiu2000 a9a2a978b8 Fixed multithreading issue with eventmanager 2019-06-27 13:20:13 -04:00
EricLiu2000 ec95f0f7c3 Wrote more tests and fixed locking bug in eventmanager 2019-06-26 15:08:41 -04:00
EricLiu2000 4923218d35 Separated tests into different files, added ResetInstance() method to EventManager 2019-06-26 11:30:24 -04:00
EricLiu2000 f45bd6772f Builds and runs on both windows and ubuntu 2019-06-25 13:20:49 -04:00
EricLiu2000 2f971d7565 Runs on windows 2019-06-25 11:35:40 -04:00
EricLiu2000 50dba62a89 Event refactor builds on Windows 2019-06-24 17:59:45 -04:00
EricLiu2000 878d9e6dde Implemented threaded error handling in errormanager and fixed compile error 2019-06-21 16:14:52 -04:00
EricLiu2000 f9d88b4743 Upgraded the severity of some warnings to errors and cleaned up internal API error adding 2019-06-21 15:08:08 -04:00
EricLiu2000 cb6f88c6bb Initial rework of internal management for overflowing errors 2019-06-21 11:18:24 -04:00
EricLiu2000 92368f70a5 Added error checking for polling 2019-06-18 11:38:12 -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
Paul Hollinsky a608d21304 Fix for error at pcap and vcp level on Windows causes crash 2019-06-14 09:41:47 -04:00
EricLiu2000 b7288edd9a Finished adding error checking 2019-06-13 16:01:35 -04:00
EricLiu2000 255e1e2b90 Added more error logging 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 2806c935f1 Added errors for DeviceCurrentlyOpen and DeviceCurrentlyClosed 2019-06-13 16:01:35 -04:00
EricLiu2000 903615dadd Added icsneo_isOpen() functionality 2019-06-13 16:01:35 -04:00
EricLiu2000 f1e0625429 Fixed typo in documentation of icsneo_getLastError 2019-06-13 16:01:35 -04:00
EricLiu2000 0644234859 Removed hard coded .dll filepaths 2019-06-13 16:01:35 -04:00
EricLiu2000 9b21c153c7 Fixed icsneoc.h to work with c 2019-06-13 16:01:35 -04:00
Paul Hollinsky b7dbeccaef Lock before adding or removing message callbacks 2019-06-13 15:47:23 -04:00
Paul Hollinsky 4530bd14c0 Merge in fixes for warnings 2019-06-12 18:36:35 -04:00
Jeffrey Quesnelle 8833617fe5 fix wrong include path for radpluto on Windows 2019-06-05 13:08:02 -04:00
Zaid Nackasha 3621184696 fixed build bugs 2019-06-03 17:18:02 -04:00
Zaid Nackasha d49fba7d81 Wrapped Visual Studio #Pragmas 2019-06-03 12:43:28 -04:00
Paul Hollinsky 56d191b438 Add support for RADPluto over USB 2019-05-14 15:29:03 -04:00
Paul Hollinsky a465d5d6c6 POSIX: Disable Ethernet communication devices until performance issues are resolved 2019-05-14 15:27:44 -04:00
Paul Hollinsky e081724da6 POSIX PCAP: Resolve a crash on a communication error 2019-05-14 15:22:12 -04:00
Paul Hollinsky f3cd9ac94b Merge branch 'pcap' 2019-05-06 12:50:29 -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