KSerial v1.0.6
Auto-Reconnection:
Added automatic reconnection with a configurable retry delay. This ensures the connection is re-established if lost, enhancing reliability in unstable environments.
Connection Status Flow:
Integrated StateFlow to broadcast real-time connection status, enabling subscribers to react to changes in connection.
Concurrency Safety:
Incorporated a Mutex (named communication) to ensure thread-safe access during read and write operations, protecting against concurrency issues.
Failure Handling & Retry Logic:
Introduced a configurable maxFailureCount to automatically disconnect after a series of consecutive failures, preventing potential deadlocks.
Added a responseFailureCounter to track failures, with an automatic reset upon successful operation.
Improved error handling by disconnecting and resetting the connection if the maximum failure threshold is reached.
Enhanced Logging:
Expanded logging to provide detailed information about connection status, data transmission, and errors, aiding in debugging and traceability.
Builder Pattern:
Implemented a Builder pattern for flexible instance creation, allowing configuration of parameters like baudRate, dataBits, stopBits, parity, retryDelay, readDelay, and maxFailureCount.
Helper Method for Port Discovery:
Added a getPorts() method in a companion object to list all available serial ports, simplifying the process of selecting a port.
Connection Verification:
Added an ensureConnected() method that verifies and re-establishes the connection before every read/write operation to prevent attempts on a disconnected port.
Documentation and Comments:
Added detailed comments and documentation throughout the code, enhancing readability, maintainability, and usability.