Package-level declarations

Types

Link copied to clipboard
Link copied to clipboard

Standard command types for EUCs

Link copied to clipboard

Base interface for EUC manufacturer protocols

Link copied to clipboard
Link copied to clipboard
open class GotwayProtocol(scope: CoroutineScope = CoroutineScope(Dispatchers.IO)) : EUCProtocol

Gotway/Begode reverse-engineered protocol (updated)

Link copied to clipboard

Single InMotion protocol entrypoint with auto-detected internal dialects (legacy V1 and V2).

Link copied to clipboard
class KingsongProtocol(scope: CoroutineScope = CoroutineScope(Dispatchers.IO)) : EUCProtocol

Improved KingSong protocol: tolerant parsing, header resync, header-aware frame reassembly using ByteByByteFrameParser, safe bounds checks, optional cell voltages parsing, and clamped command generation.

Link copied to clipboard
open class LeaperkimProtocol(scope: CoroutineScope = CoroutineScope(Dispatchers.IO)) : EUCProtocol

Leaperkim/Veteran protocol implementation based on WheelLog raw frame behavior.

Link copied to clipboard

Ninebot protocol MVP parser for common WheelLog-style telemetry payloads.

Link copied to clipboard

Dedicated Ninebot Z-series protocol split with stateful handshake/polling queries. Decoding is delegated to NinebotProtocol while command/query orchestration is Z-specific.

Link copied to clipboard
class NosfetProtocol(scope: CoroutineScope = CoroutineScope(Dispatchers.IO)) : LeaperkimProtocol
Link copied to clipboard
data class ProtocolPollingPlan(val enabled: Boolean, val startupQueries: List<ProtocolQuerySpec> = emptyList(), val periodicQueries: List<ProtocolQuerySpec> = emptyList())
Link copied to clipboard
data class ProtocolQuerySpec(val id: String, val commandType: CommandType, val value: Any = Unit, val initialDelayMs: Long = 0, val intervalMs: Long = 0, val responseTimeoutMs: Long = 1500, val maxRetries: Int = 2, val retryBackoffMs: Long = 500)