Commit Graph
100 Commits
Author SHA1 Message Date
Paul Hollinsky e52073c518 Tests: EthernetPacketizer: Fix typo 2022-02-25 01:14:57 -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 80cd4ae052 Disk: Fix out of bounds accesses in base ReadDriver 2022-02-25 01:14:57 -05:00
Paul Hollinsky f8bfb243fa Disk: Implement NeoMemoryDiskReadDriver 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 9e6970fd39 Windows: DynamicLib: Slim down Windows.h
This is important as it ends up being included in icsneoc.h
2022-02-24 16:37:13 -05:00
Paul Hollinsky 6cd821be2c Build: Don't add libusb include until after libftdi
This fixes GH-46 and a regression caused by 82954d9 where the project
would fail to build until configured a second time on Unix-y platforms.

LibFTDI adds libusb, so we need to make sure that's included first.

Windows does not use libusb so it does not need the include directory.
2022-02-24 16:03:02 -05:00
Paul Hollinsky 6cc0f08e2b Settings: The device can report when defaults were applied 2022-02-24 15:50:39 -05:00
Paul Hollinsky 80362e7f81 Event Manager: Refactor 2022-02-24 15:49:21 -05:00
Paul Hollinsky d7d9c15a9f Tests: Resolve MSVC x86 warnings 2022-02-22 10:49:49 -05:00
Paul Hollinsky c326397bea Examples: C Interactive: Resolve warnings 2022-02-22 10:49:49 -05:00
Paul Hollinsky af152fe54a CI: Also set warnings as errors in C code 2022-02-22 10:49:49 -05:00
Paul Hollinsky d051d20db6 CI: Add Windows 32-bit 2022-02-22 10:49:49 -05:00
Paul Hollinsky d0d279fdad Windows: Disable unaligned on x86
Closes GH-44
2022-02-22 10:49:49 -05:00
Paul Hollinsky c32d027b2d MessageCallback: Tolerate being created with nullptr filter
Communication does this in waitForMessageSync if a filter
is not passed in.

This fixes a crash in icsneoWaitForRxMessagesWithTimeOut
for the legacy API.

For good measure, creation with an empty std::function will
immediately throw an std::bad_function_call back at the
caller, rather than letting that happen on the callback thread.

I'm also making the members const here so they are provably
always non-null (and not empty, for the function).
2022-02-21 22:55:49 -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 159c54b756 Legacy: Updates for the new neomessage_t API 2022-02-21 21:36:20 -05:00
Paul Hollinsky 416996b31d CI: Warnings are errors 2022-02-21 21:36:20 -05:00
Paul Hollinsky f37669139f MSVC: Resolve warnings 2022-02-21 21:36:20 -05:00
Paul Hollinsky 7aedb673fd Legacy: Fix icsneoGetVnetSimpleNetid
The NetID is written to the out* parameter, not returned.
2022-02-21 21:28:31 -05:00
Paul Hollinsky 52c7b5aaca Legacy: Fix icsneoGetNetidforSlaveVNETs
The NetID is written to the out* parameter, not returned.
2022-02-21 21:28:31 -05:00
Paul Hollinsky 0f9bf83c89 Legacy: Formatting 2022-02-21 21:28:31 -05:00
Paul Hollinsky dfd8768bbf Legacy: Correct Ethernet message translation
* Fixes NetIDs over 255
* Fixes data lengths over 255
* Avoids writing unexpected messages to client
2022-02-21 21:28:31 -05:00
Paul Hollinsky 94e0ea1fe0 Legacy: Prevent incorrect access to NetID maps 2022-02-21 21:28:30 -05:00
Paul Hollinsky 58944a2523 Tests: Spaces to Tabs 2022-02-21 21:28:30 -05:00
Paul Hollinsky be666e810d CI: Add Windows 2022-02-21 21:28:30 -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
Paul Hollinsky 4fd65d85c8 Windows: PCAP: Fix WinPCAP loading
Used when LIBICSNEO_NPCAP_INCLUDE_DIR is not defined
2022-02-14 19:24:46 -05:00
Paul Hollinsky 0ded5508c1 Windows: Fix build issues with EthPhyRegPacket 2022-02-14 19:20:50 -05:00
Paul Hollinsky 6d92b7a03a Windows: PCAP: Fix a race which could cause transmit delays
If you had a chain of packets being sent all at once, the latter
section of packets could be delayed, theoretically infinitely.

If queue1 was filled and enqueued for transmit, then queue2
had packets enqueued in it while queue1 was still transmitting,
we'd try to fill queue2 further rather than waiting for queue1's
transmit to finish.

However, in that case, we wouldn't check if we could transmit
queue2 again until the next packet. If the user application
was waiting for the response from something in queue2
before pushing more packets, it could hang indefinitely.

This also fixes a subtle bug where hitting the "not safe to try
to fit any more packets in this queue" limit would cause a
packet to drop, as it would be dequeued and then tossed.

Closes GH-42
2022-02-04 01:14:08 -05:00
Paul Hollinsky 890eb1e1bc RAD-Galaxy: Update settings structure with new entries 2021-12-08 14:30:54 -05:00
Paul Hollinsky 96f18dcfd6 PCAP: Don't use pthread_cancel on Linux
It is not necessary and can cause a crash in libunwind
2021-12-08 14:30:02 -05:00
Paul Hollinsky d5087c1ba5 Communication: Remove extra accidentally added logging 2021-12-06 05:41:27 -05:00
Paul Hollinsky f8b5710a6c Communication: Avoid MessageFilter type punning in waitForMessageSync 2021-12-02 15:00:13 -05:00
Paul Hollinsky 78747aa899 CMake: Set CXX_STANDARD to C++11 if not set elsewhere
We need at least C++11.

If we're statically compiling into an application, we want to be using the same
CXX_STANDARD as it for ABI compatibility (particularly with icsneo::optional),
hence having the check around it.
2021-11-16 20:04:12 -05:00
Paul Hollinsky 2d6004bed1 CANPacket: Remove unused byte from datastream 2021-11-16 20:04:12 -05:00
Paul Hollinsky 574530978c Encoder: Add 1 to host-to-device long format packets
Vehicle Spy 3 does this, it's a long-standing firmware idiosyncrasy.

Due to the way the device handles packets, this didn't cause a loss of
communication, only a "host to device byte" app error under certain
circumstances.
2021-11-16 20:03:41 -05:00
Paul Hollinsky 988289afc1 ValueCAN 4 Industrial: Disable 16-bit alignment over Ethernet
This is a continuation of a1a544045b
2021-11-16 20:03:02 -05:00
Paul Hollinsky ac77fe2b56 POSIX: PCAP: Use EthernetPacketizer 2021-09-23 21:31:59 -04:00
Paul Hollinsky 1aa3828688 Ethernet Comm Devices: Disable unnecessary align16bit 2021-09-23 21:30:48 -04:00
Paul Hollinsky 0656cb568e EthernetPacketizer: Coalesce small PC-to-device packets 2021-09-23 21:29:15 -04:00
Paul Hollinsky 6b37acf471 Encoder: Remove unused function
This is instead handled by an overloaded function in Communication
2021-09-21 00:23:32 -04: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 f129be34b5 C API: Resolve compilation against new icsneo::Messasge API 2021-09-20 23:24:19 -04:00
Paul Hollinsky 38f0022bb6 Communication: Support extended commands 2021-09-20 23:07:49 -04:00
Paul Hollinsky 1b13e2d6a4 MessageFilter: Ensure non-frames can be filtered by network type and ID 2021-09-20 19:38:00 -04:00
Paul Hollinsky c847d68f3c POSIX FTDI: Count LIBUSB_ERROR_IO as a disconnection 2021-09-20 19:30:59 -04:00
Paul Hollinsky 3764a2e814 Device: Wider tolerance for disconnections 2021-09-20 19:29:57 -04:00
Paul Hollinsky 5f44986c1b Merge branch 'master' into v0.3.0-dev 2021-08-22 13:15:54 -04:00
Paul Hollinsky 68715d515d Decoder: Allow older ResetStatus packets without voltage or temperature 2021-08-22 13:12:36 -04:00
Paul Hollinsky 27184a203f Legacy: Use new layout for SDeviceSettings
This fixes issues where the settings values would be shifted.
2021-08-20 10:36:55 -04:00
Paul Hollinsky c7e7222140 Legacy: Ensure stddef.h is present for size_t
Many compilers won't need this, but better to
have it so it's correct.
2021-08-05 15:07:02 -07:00
Paul Hollinsky 6241996a58 RAD-Star 2: Fix invalid serial numbers being reported 2021-07-06 19:38:41 -04:00
Paul Hollinsky 84c6b202c7 RAD-Star 2: Fix invalid serial numbers being reported 2021-07-06 19:31:44 -04:00
Paul Hollinsky 16b88b7787 macOS: PCAP: Fix typo 2021-07-05 23:55:22 -04:00
Paul Hollinsky 0c67cdf078 macOS: PCAP: Fix typo 2021-07-05 23:54:15 -04:00
Paul Hollinsky bb65e37841 Merge branch 'master' into v0.3.0-dev 2021-06-17 21:07:50 -04:00
Paul Hollinsky 02c14aeb35 macOS: PCAP: Add code necessary for device discovery
You will still need chmod_bpf or similar to find devices
2021-06-17 21:07:22 -04:00
Paul Hollinsky 37d06807e4 POSIX: PCAP: Update inferface name to match Windows implementation 2021-06-15 19:09:13 -04:00
Paul Hollinsky b13a33f0be Windows: PCAP: Less verbose name for the interface
Fixing some tabs/spaces formatting here as well
2021-06-15 19:09:05 -04:00
Paul Hollinsky 3cff831c6b Examples: C++: Correct compilation in a C++20 project
Otherwise nonstd::optional doesn't match std::optional
2021-06-14 14:42:37 -04:00
Paul Hollinsky a8562aca60 API: Legacy: Make icsneoFindDevices edge cases match icsneo40 2021-06-14 14:41:54 -04:00
Paul Hollinsky e5bf87ba7d Merge branch 'master' into v0.3.0-dev 2021-06-11 18:54:36 -04:00
Paul Hollinsky da4ab6ef62 API: Legacy: Fix MSVC build issues 2021-06-11 18:44:33 -04:00
Paul Hollinsky a9840028ff Windows: DynamicLib: DLLExport before _stdcall for Legacy 2021-06-11 18:43:33 -04:00
Paul Hollinsky 4b7cb28bdf API: Legacy: Disable octal mappings for non-stubbed functions 2021-06-11 18:42:33 -04:00
Paul Hollinsky c888aad5ae VersionPacket: Use C++11 function signature 2021-06-11 18:40:50 -04:00
Paul Hollinsky 8c9d3a5e6a Merge branch 'master' into v0.3.0-dev 2021-06-11 15:40:42 -04:00
Paul Hollinsky 4588cb55fa POSIX: DynamicLib: Force visibility of exports in case of -fvisibility=hidden 2021-06-11 15:20:41 -04:00
Paul Hollinsky 9b2eae4a6c API: Legacy: Fix icsneoFindDevices 2021-06-11 15:19:40 -04:00
Paul Hollinsky 45c879c2b6 API: Legacy: Update def file with the correct ordinals 2021-06-11 13:52:09 -04:00
Paul Hollinsky a43c0117d6 API: C: Check nullptr in icsneo_serialStringToNum
Otherwise it will implicitly call the std::string constructor
and that constructor does not check nullptr.
2021-06-11 13:06:47 -04:00
Paul Hollinsky f3e456e7ea API: Legacy: Fix build issues caused by the merge 2021-06-11 13:05:39 -04:00
Paul Hollinsky 843fa92564 API: Legacy: Add standard DLLExport to LegacyDLLExport 2021-06-11 12:39:20 -04:00
Paul Hollinsky 34f7bfabd2 API: Legacy: Remove unused variable 2021-06-11 12:36:37 -04:00
Paul Hollinsky 4095f23ded Settings: Make getBaudrateFor work for SWCAN and LSFTCAN 2021-06-10 15:18:31 -04:00
Paul Hollinsky 1b7db51a45 Windows: PCAP: Fix Npcap loading for _UNICODE 2021-06-10 15:18:23 -04:00
Paul Hollinsky 165eb0f8a2 Windows: Correct dynamic load helper when _UNICODE is defined 2021-06-10 15:18:13 -04:00
Paul Hollinsky ed94012046 Examples: Interactive C: Fix initializers 2021-06-10 15:18:05 -04:00
Paul Hollinsky 7b7320bc27 Support the RAD-Epsilon 2021-06-10 15:17:57 -04:00
Paul Hollinsky 19aabdfacf POSIX: PCAP: Cancel after pcap_breakloop() to EINTR out of poll()
This is necessary as pcap_breakloop() does not actually wake the
thread from blocking operations, such as poll.
2021-06-10 15:17:43 -04:00
Paul Hollinsky b340d167dc Support the neoVI RED 2 2021-06-10 15:17:34 -04:00
Paul Hollinsky d4f6c12394 CANPacket: Fix invalid length check
This case is already checked above, and further
was invalid since the length had already been
translated to the numeric (0-64) value.
2021-06-10 15:03:34 -04:00
Paul Hollinsky ffe2d34799 Settings: Make getBaudrateFor work for SWCAN and LSFTCAN 2021-06-01 22:40:26 -04:00
Paul Hollinsky 71fc039689 Windows: PCAP: Fix Npcap loading for _UNICODE 2021-05-30 03:02:41 -07:00
Paul Hollinsky 496a007da3 Windows: Correct dynamic load helper when _UNICODE is defined 2021-05-30 02:57:18 -07:00
Paul Hollinsky cf8bcd1d63 Examples: Interactive C: Fix initializers 2021-05-30 02:55:00 -07:00
Paul Hollinsky bda37e31f3 Support the RAD-Epsilon 2021-05-28 18:10:16 -04:00
Paul Hollinsky c12330eec4 POSIX: PCAP: Cancel after pcap_breakloop() to EINTR out of poll()
This is necessary as pcap_breakloop() does not actually wake the
thread from blocking operations, such as poll.
2021-05-27 22:47:44 -04:00
Paul Hollinsky 04e7bfd1af Support the neoVI RED 2 2021-05-27 22:47:36 -04:00
Paul Hollinsky ed5132e852 CANPacket: Ensure correct padding when padding by the DLC 2021-05-25 22:19:03 -04:00
Paul Hollinsky 76b6ecbf04 CANPacket: Fix invalid length check
This case is already checked above, and further
was invalid since the length had already been
translated to the numeric (0-64) value.
2021-05-25 17:23:41 -04:00
Paul Hollinsky ad07af160c MSVC: Variable shadowing 2021-05-22 11:31:19 -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 21e93d1f73 CAN: Honor the specified dlcOnWire for transmit 2021-05-21 17:38:00 -04:00
Paul Hollinsky b97f358a0f Settings: Extra Ethernet settings on ValueCAN 4 and RAD-Pluto 2021-05-10 21:17:31 -04:00
Paul Hollinsky 6f8e073fd1 MultiChannelCommunication: Resolve MSVC constexpr warning 2021-05-10 21:16:21 -04:00
Paul Hollinsky 07afbebc6d Settings: Resolve MSVC structure warnings 2021-05-10 21:15:54 -04:00