Paul Hollinsky
733312628c
CI: Also set warnings as errors in C code
2022-02-22 10:37:37 -05:00
Paul Hollinsky
b177617940
CI: Add Windows 32-bit
2022-02-22 10:31:46 -05:00
Paul Hollinsky
28d3730375
Windows: Disable unaligned on x86
...
Closes GH-44
2022-02-22 10:24:13 -05:00
Paul Hollinsky
c451fc2b7c
CI: Warnings are errors
2022-02-21 21:23:58 -05:00
Paul Hollinsky
c620b2ee8b
MSVC: Resolve warnings
2022-02-21 21:16:15 -05:00
Paul Hollinsky
111d377d4a
Legacy: Fix icsneoGetVnetSimpleNetid
...
The NetID is written to the out* parameter, not returned.
2022-02-21 21:16:12 -05:00
Paul Hollinsky
c3469f5fb6
Legacy: Fix icsneoGetNetidforSlaveVNETs
...
The NetID is written to the out* parameter, not returned.
2022-02-21 21:16:07 -05:00
Paul Hollinsky
0219eccc94
Legacy: Formatting
2022-02-21 21:14:31 -05:00
Paul Hollinsky
e22f70a35a
Legacy: Correct Ethernet message translation
...
* Fixes NetIDs over 255
* Fixes data lengths over 255
* Avoids writing unexpected messages to client
2022-02-21 21:14:31 -05:00
Paul Hollinsky
b019c20ad0
Legacy: Prevent incorrect access to NetID maps
2022-02-21 21:14:31 -05:00
Paul Hollinsky
6fa469de5f
Tests: Spaces to Tabs
2022-02-21 20:26:57 -05:00
Paul Hollinsky
be219288dc
CI: Add Windows
2022-02-21 20:13:28 -05:00
Paul Hollinsky
d35653e3d0
Windows: PCAP: Fix WinPCAP loading
...
Used when LIBICSNEO_NPCAP_INCLUDE_DIR is not defined
2022-02-14 19:37:41 -05:00
Paul Hollinsky
0ce7326b83
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-14 19:37:41 -05:00
Paul Hollinsky
714db03a05
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 19:49:08 -05:00
Paul Hollinsky
d097fb9a74
CANPacket: Remove unused byte from datastream
2021-11-16 19:48:55 -05:00
Paul Hollinsky
9d5bad94d4
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 19:35:20 -05:00
Paul Hollinsky
181223375a
ValueCAN 4 Industrial: Disable 16-bit alignment over Ethernet
...
This is a continuation of a1a544045b
2021-11-16 19:27:38 -05:00
Paul Hollinsky
51626b9e63
POSIX: PCAP: Use EthernetPacketizer
2021-11-16 18:00:04 -05:00
Paul Hollinsky
a1a544045b
Ethernet Comm Devices: Disable unnecessary align16bit
2021-11-16 18:00:04 -05:00
Paul Hollinsky
719dbcefc8
EthernetPacketizer: Coalesce small PC-to-device packets
2021-11-16 18:00:04 -05: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
84c6b202c7
RAD-Star 2: Fix invalid serial numbers being reported
2021-07-06 19:31:44 -04:00
Paul Hollinsky
0c67cdf078
macOS: PCAP: Fix typo
2021-07-05 23:54:15 -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
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
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
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
Paul Hollinsky
9ba7320fd3
MSVC: Fix build warnings
2021-05-05 12:51:52 -04:00
Paul Hollinsky
f752924a36
Unaligned: Use correct MSVC define
2021-05-05 12:32:29 -04:00
Paul Hollinsky
295ba490aa
Settings: Mark termination enables as an unaligned ptr
...
Unfortunately, the termination enables are not always at an aligned
boundary, and MSVC needs to taint the ptr type with __unaligned
in that case.
2021-05-05 03:38:58 -04:00
Paul Hollinsky
1bb114004e
Remove unused parameters
...
These can cause warnings (which we treat as errors) on MSVC
2021-05-05 02:40:00 -04:00
Paul Hollinsky
e99107c1bc
Device: Allow different Question options for OpenStatus
2021-05-05 02:21:15 -04:00
Paul Hollinsky
82113f1a67
Settings: Better handling of the checksum
2021-05-05 02:20:36 -04:00
Paul Hollinsky
0006f31844
Network: Mark Main51, OldFormat, and ReadSettings as Internal
2021-05-05 02:18:22 -04:00
Paul Hollinsky
595cc36545
Device: Implement version handling
2021-05-05 02:17:38 -04:00
Paul Hollinsky
8be3bbaee5
CMake: Use CMAKE_CXX_STANDARD_REQUIRED
2021-05-05 02:16:01 -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
3d4e0a27e3
Decoder: Pass on short Device messages
2021-04-29 19:07:38 -04:00
Paul Hollinsky
0ce52f064b
Event: Better error message for USB powered devices
2021-04-29 18:15:56 -04:00
Paul Hollinsky
f629125e67
Build: Allow inheritance of the C++ standard
...
This fixes symbol name incompatibilities when linking with icsneo::optional
between C++ standards.
2021-04-29 18:08:01 -04:00
Paul Hollinsky
a63d701839
Event: More user-friendly message for the packet decoding error
2021-04-29 18:07:08 -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
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
8e2883bca9
MultiChannelCommunication: Use generic handleInput
...
This way redirection, and any other changes we
make to the packetizer/dispatch flow, apply to
MultiChannelCommunication as well.
2021-04-23 22:34:32 -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
b7ce9819bd
POSIX STM32: Handle large write payloads failing with O_NONBLOCK
2021-04-23 17:06:16 -04:00
Paul Hollinsky
55ca6adee6
Communication: Allow redirection of reads
2021-04-23 17:00:37 -04:00
Paul Hollinsky
bb7719d185
POSIX Drivers: Clear disconnected status when closing
...
This allows us to properly re-open if we were
previously disconnected.
2021-04-23 16:59:48 -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
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
c8bf1f26da
Examples: C Interactive: Initialize product description to empty string
...
This is a guard in case the icsneo_describeDevice call were to
fail for some reason, and is just good practice regardless.
2021-04-11 22:00:12 -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
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
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