Commit Graph

576 Commits (008a1620c81f9e3ead5a53755c06a72c07dfdcb9)

Author SHA1 Message Date
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 f4e16025c1 Disk: ExtendedExtractor: Implement retries 2022-03-10 18:04:12 -05:00
Paul Hollinsky fef6f363f1 ThirdParty: FatFs: Use standard C++ for MSVC 2017+
This prevents unicode issues with TCHAR, because we
don't want to import windows.h.
2022-03-07 12:49:03 -05:00
Paul Hollinsky f367fcecca Disk: NeoMemory: Implement writing 2022-03-03 20:34:46 -05:00
Paul Hollinsky f05fd5e201 EthernetPacketizer: Correct reassembly for RAD devices
The RAD devices will give us a packet size larger than the packet,
as they specify the size of the entire reassembly.
2022-03-03 20:34:46 -05:00
Paul Hollinsky adad9b3761 Disk: ExtendedExtractor: Better header parsing 2022-03-03 20:34:46 -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 8c774228bc Disk: FAT: Fix Windows UNICODE compilation 2022-03-03 15:13:04 -05:00
Paul Hollinsky 478dfb3cb8 Platform: Windows: Create trampoline header
This way windows.h can be included if needed without a guard,
and we have a place to stub out defines for other platforms if
necessary.
2022-03-03 15:01:32 -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 453d3366af Platform: Windows: Avoid windows.h
This way Windows.h doesn't pollute everything with random defines
2022-02-28 19:12:35 -05:00
Paul Hollinsky caf5cca42f Disk: Plasion: Fix bit-width issues 2022-02-28 19:11:39 -05:00
Paul Hollinsky ae1b8d342e Disk: Use std::chrono::seconds for CacheTime
This fixes an issue with MSVC
2022-02-28 19:11:27 -05:00
Paul Hollinsky c314417277 Device: Find the VSA offset for Disk::Access::EntireDisk 2022-02-28 15:55:16 -05:00
Paul Hollinsky 1fadb85206 ThirdParty: Add FatFs
R0.14b
2022-02-28 15:54:38 -05:00
Paul Hollinsky 6bcd8e5637 Disk: Read driver for Plasion 2022-02-28 03:40:44 -05:00
Paul Hollinsky 4c9d6c5ee7 Disk: NeoMemory: Cache last read sector for one second
This prevents constant re-reads if reading in small chunks
2022-02-28 01:55:31 -05:00
Paul Hollinsky 4ef8fe8794 Disk: Predictable behavior for zero length reads 2022-02-28 01:54:21 -05:00
Paul Hollinsky f8a46b7196 Device: Add logical disk size accessor 2022-02-28 01:49:50 -05:00
Paul Hollinsky 0b27e88da1 Disk: WriteDriver: Fix parameter shadowing 2022-02-25 01:14:57 -05:00
Paul Hollinsky 241502c2a2 Disk: Fix improper offset calculation
This would cause an underflow previously
2022-02-25 01:14:57 -05:00
Paul Hollinsky 242c7259ac Disk: Proper error reporting for EOF 2022-02-25 01:14:57 -05:00
Paul Hollinsky 9d2d94d22b Tests: Add disk driver tests 2022-02-25 01:14:57 -05:00
Paul Hollinsky bb49ce039e ThirdParty: Update included gtest 2022-02-25 01:14:57 -05:00
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