| getPollingPlan() |  | 0% | | n/a | 1 | 1 | 22 | 22 | 1 | 1 |
| matchesQueryResponse(ProtocolQuerySpec, byte[]) |  | 0% |  | 0% | 11 | 11 | 8 | 8 | 1 | 1 |
| parseWheelLogTelemetryFrame(byte[]) |   | 85% |   | 56% | 26 | 31 | 1 | 45 | 0 | 1 |
| parseLegacyFrame(byte[]) |   | 83% |   | 54% | 21 | 24 | 2 | 38 | 0 | 1 |
| decodeWheelLogSpeed(byte[]) |   | 60% |   | 25% | 8 | 9 | 2 | 7 | 0 | 1 |
| createCommand(CommandType, Object) |   | 51% |   | 33% | 6 | 9 | 5 | 9 | 0 | 1 |
| deriveRideTimeSeconds(long) |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| parseWheelLogSettingsFrame(int, byte[]) |   | 86% |   | 65% | 11 | 22 | 2 | 17 | 0 | 1 |
| parseWheelLogBmsFrame(int, byte[]) |   | 88% |   | 55% | 15 | 18 | 0 | 23 | 0 | 1 |
| decodeWheelLogBattery(byte[]) |   | 43% |   | 33% | 3 | 4 | 3 | 6 | 0 | 1 |
| isDeviceReady(EUCData) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| parseWheelLogFrames(byte[]) |   | 89% |   | 70% | 7 | 13 | 2 | 26 | 0 | 1 |
| estimateBatteryPercent(double) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| parseWheelLogAuthFrame(byte[]) |   | 90% |   | 50% | 7 | 8 | 0 | 7 | 0 | 1 |
| parseWheelLogFirmwareFrame(byte[]) |   | 91% |   | 50% | 4 | 5 | 0 | 11 | 0 | 1 |
| parseWheelLogSerialFrame(byte[]) |   | 93% |   | 50% | 6 | 7 | 0 | 13 | 0 | 1 |
| parseWheelLogFrame(byte[]) |   | 91% |   | 78% | 3 | 11 | 0 | 19 | 0 | 1 |
| parseWheelLogBleVersionFrame(byte[]) |   | 86% |   | 50% | 2 | 3 | 0 | 6 | 0 | 1 |
| getServiceUUID() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getDataCharacteristicUUID() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getWriteCharacteristicUUID() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getCommandSupport(CommandType) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| matchesDeviceName(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| inferModel(byte[]) |   | 84% |   | 75% | 1 | 3 | 0 | 2 | 0 | 1 |
| getSupportedCommandTypes() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getWriteFlow() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getCandidateDataCharacteristicUUIDs() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| findWheelLogHeaderIndex() |  | 96% |   | 75% | 2 | 5 | 0 | 7 | 0 | 1 |
| getBMSData() |  | 94% |   | 50% | 1 | 2 | 0 | 14 | 0 | 1 |
| extractWheelLogPayload(byte[]) |  | 92% |   | 50% | 1 | 2 | 0 | 5 | 0 | 1 |
| NinebotProtocol() |  | 100% | | n/a | 0 | 1 | 0 | 20 | 0 | 1 |
| close() |  | 100% | | n/a | 0 | 1 | 0 | 22 | 0 | 1 |
| buildControlCommand(int, int) |  | 100% |  | 100% | 0 | 2 | 0 | 10 | 0 | 1 |
| buildQueryCommand(int) |  | 100% |  | 100% | 0 | 2 | 0 | 9 | 0 | 1 |
| decode(byte[]) |  | 100% |  | 100% | 0 | 2 | 0 | 10 | 0 | 1 |
| getZSettingsSnapshot() |  | 100% | | n/a | 0 | 1 | 0 | 15 | 0 | 1 |
| getZBmsSnapshots() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getManufacturer() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getDataFlow() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getRawFrameFlow() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |