Refactor `OptoTelegramRaw` volume and timestamp unwrapping logic:
- Simplify rollover handling for both volume and timestamp unwrapping.
- Normalize and streamline calculations for improved clarity and maintainability.
- Comment out long-run test in `IperlHead_test_RollOver_Average` pending fixes.
Add extended rollover and averaging tests for `OptoTelegramRaw`:
- Enhance `OptoTelegramRawTest` with long-run scenarios for handling time and volume rollovers.
- Introduce `IperlHead_test_RollOver_Average` for verifying volume averaging and timestamp centering across rollovers and ring buffer wrap.
- Refactor constants for better clarity and reuse.
- Update project files to include new test class.
- Implement 24-bit counter rollover logic in `PopulateVolume` to normalize and compensate volume values.
- Add `PopulateVolumeRolloverTests_Concept` for thorough validation of rollover scenarios.
- Update project files to include new unit test suite.
- Include clarification comments for volume and timestamp rollover constants in `OptoTelegramRaw`.
- Refactor volume unwrapping logic to handle 24-bit rollover in `OptoTelegramRaw`.
- Add `UpdateFromSmart_VolumeRollover_UnwrapsCorrectly` unit test to validate volume rollover behavior.
- Simplify constants and improve normalization logic for volume and timestamp.
Refactor iPerl communication and improve robustness:
- Enhance `OpenOptoSerialPort` with async `Open()` and timeout handling.
- Improve exception handling in `ReadOptoData`, logging timeouts and errors.
- Add null checks for `outPath` components (`FlowMeter`, `Scale`) in `SequenceBase`.
- Update `AssemblyVersion` and `AssemblyFileVersion` to 3.9.2208.1.
Refactor iPerl communication system and add unit tests:
- Update `IperlHead` logic: Fix `VolumeFromSamples` calculation by refining sample filtering and averaging logic.
- Introduce `AutoClickOkAfterDelay` in `CycleBgEnForm` and `TestStartEndForm` for automated dialog interactions.
- Add `OptoTelegramRawTest` and `OptoTelegramRawTest_UpdateFromSmart_Concept` to validate timestamp unwrapping, volume unwrapping, and edge case handling.
- Enhance asynchronous testing and mocking framework for improved stability.
- Update project files to include new test suites and ensure proper build integration.
Add async methods for iPerl communication and update simulation logic:
- Extend `IperlHead` with async methods for reading opto data and volumes (`DataEntry_ReadSerialNumberAsync`, `DataEntry_BeginVolumeAsync`, `DataEntry_EndVolumeAsync`).
- Add support for async serial number reading in `CycleBgEnForm`, implementing real-time updates for `regReaders`.
- Enhance `FlyingStartStopTestOp` and `StandingStartStopTestOp` with simulation timers for processing time (25 seconds).
- Improve exception handling and debug logs across modules (`DataEntry_ReadSerialNumber`, `ReadOptoDataWithTimeoutAsync`).
- Introduce optional `regReaders` parameter to `CycleBgEnForm` constructor for enhanced flexibility in device handling.
- Update `EntryFormNoStartEnd` to conditionally use `regReaders` when initializing `CycleBgEnForm`.
- Add `Set by RegReader` action type to `DEItem`.
Remove `SharedComponents` references and legacy `LiveLogCache` logic:
- Eliminate unused `SharedComponents` references across the solution to streamline dependencies.
- Comment out `LiveLogCache` interactions in multiple modules, transitioning to alternative or undefined logging mechanisms.
- Add optional `regReadersOptional` parameters to `ShowCycleBeginFormOp` methods for improved flexibility.
- Introduce `ITestMethodSmart` interface to support smart reader functionality.
- Add new `LogCacheAppender` configuration to `log4netConfig.xml` for diagnostic use.
- Update project files to remove outdated references and include newly introduced files.
- Replace `throw ex` with detailed `log.Error` messages across `OptoHeadTest` methods.
- Enhance `OpenCycleBeginForm` method: add optional `regReadersOptional` parameter.
- Update `ReadSerialNr` in `iPerlCommunicationForm` to handle failures and include formatted result string.
Add error handling and improve binary read/write logic in `ConfigStruct`. Introduce `ConfigStructTest` for coverage of serialization behaviors. Update project file to include the new test suite.
- Add `ISerialDriver` interface and implement in `SerialDriver`.
- Introduce new methods in `ConfigStruct` for detailed status and active mode strings.
- Update `RadioService` with support for `ISerialDriver`, improved mode-setting logic, and configuration updates.
- Add new constants (`ReadSerialNrStr`, `SetIdleModeStr`) and `ReadSerialNr`/`SetIdleMode` methods in `iPerlCommunicationForm`.
- Extend `RadioServiceTest` with tests for activity and opt test modes.
- Update project files to include `ISerialDriver` and new test suite.
Refactor iPerl communication system:
- Consolidate redundant OptoHead methods.
- Introduce new utilities for diagnostic LED state handling and volume unit conversions.
- Improve FIFO logic in flow direction detection with enhanced regression calculation.
- Add enhanced debugging and logging within communication layers (`SerialDriver` and `RadioService`).
- Update communication protocols for improved response handling and configuration management.
- Replace raw volume with meaningful unit-based values (`RawVolume1to4`).