diff --git a/Auto_Seat.ino b/Auto_Seat.ino index 929ba81..35bc98e 100644 --- a/Auto_Seat.ino +++ b/Auto_Seat.ino @@ -583,45 +583,26 @@ void printStatus(const __FlashStringHelper *tag) { Serial.print(tag); Serial.println(F("]")); printUptime(); - Serial.print(F("raw=")); - Serial.print(parkingRawValue); - Serial.print(F(" ig=")); - Serial.print(ignitionState == HIGH ? 1 : 0); - Serial.print(F(" p=")); - Serial.print(parkingState == HIGH ? 1 : 0); - Serial.print(F(" rawDrive=")); - Serial.print(getRawDriveMode() == HIGH ? 1 : 0); - Serial.print(F(" confirmedDrive=")); - Serial.println(confirmedDriveMode == HIGH ? 1 : 0); - - Serial.print(F("currentMs=")); - Serial.print(currentPosMs); - Serial.print(F(" targetMs=")); - Serial.print(targetPosMs); - Serial.print(F(" savedPositionMs=")); - Serial.print(storedSeatPositionMs); - Serial.print(F(" hardLimitMs=")); - Serial.println(SEAT_HARD_LIMIT_UP_MS); - - Serial.print(F("requestedRelay=")); - Serial.print(requestedSeatAction); - Serial.print(F(" actualRelay=")); - Serial.print(currentSeatAction); - Serial.print(F(" manualMode=")); - Serial.print(manualMode ? 1 : 0); - Serial.print(F(" stabilizing=")); - Serial.println(isStabilizing ? 1 : 0); - + printNamedInt(F("raw"), parkingRawValue); + printNamedBool(F("ig"), ignitionState == HIGH); + printNamedBool(F("p"), parkingState == HIGH); + printNamedBool(F("rawDrive"), getRawDriveMode() == HIGH); + printNamedBool(F("confirmedDrive"), confirmedDriveMode == HIGH); + printNamedLong(F("currentMs"), currentPosMs); + printNamedLong(F("targetMs"), targetPosMs); + printNamedInt(F("savedPositionMs"), storedSeatPositionMs); + printNamedInt(F("hardLimitMs"), SEAT_HARD_LIMIT_UP_MS); + printNamedInt(F("requestedRelay"), requestedSeatAction); + printNamedInt(F("actualRelay"), currentSeatAction); + printNamedBool(F("manualMode"), manualMode); + printNamedBool(F("stabilizing"), isStabilizing); Serial.print(F("useCount=")); Serial.print(useCount); Serial.print(F("/")); - Serial.print(USES_BEFORE_AUTO_CALIBRATION); - Serial.print(F(" autoPending=")); - Serial.print(autoCalibrationPending ? 1 : 0); - Serial.print(F(" forceCal=")); - Serial.print(forceCalibration ? 1 : 0); - Serial.print(F(" autoCalState=")); - Serial.println(autoCalibrationState); + Serial.println(USES_BEFORE_AUTO_CALIBRATION); + printNamedBool(F("autoPending"), autoCalibrationPending); + printNamedBool(F("forceCal"), forceCalibration); + printNamedInt(F("autoCalState"), autoCalibrationState); printAutoCalibrationDelayStatus(); } diff --git a/README.md b/README.md index ede3007..9db373d 100644 --- a/README.md +++ b/README.md @@ -80,10 +80,16 @@ While debug mode is active, only `x` is accepted. Other input is ignored. Manual position commands `u`, `d`, and `p` are allowed while driving, as long as the controller is not busy with an in-progress movement. -Every status output includes boot uptime: +Every status output uses one item per line and includes boot uptime: ```text +[STATUS] uptime=0h 2m 13s 457ms +raw=1023 +ig=true +p=true +rawDrive=false +confirmedDrive=false ``` If the use counter reached 10, status/debug output also includes the ignition-off calibration timer: diff --git a/report.html b/report.html index d977968..647f66e 100644 --- a/report.html +++ b/report.html @@ -224,7 +224,7 @@ when currentPosMs <= 0:

주의: 명령은 한 글자만 받습니다. debug, down, position 2000처럼 긴 문자열은 실행하지 않습니다.

-

모든 상태 출력에는 부팅 후 경과 시간이 uptime=0h 2m 13s 457ms 형식으로 포함됩니다. debug 출력에서도 1초마다 같은 형식으로 확인할 수 있습니다.

+

모든 상태 출력은 항목별 한 줄 형식이며, 부팅 후 경과 시간이 uptime=0h 2m 13s 457ms 형식으로 포함됩니다. debug 출력에서도 1초마다 같은 형식으로 확인할 수 있습니다.

사용 횟수가 10회에 도달한 경우에만 보정 대기 타이머가 autoCalOffTimer=elapsed 0h 1m 20s 123ms remaining 0h 3m 39s 877ms 형식으로 추가 출력됩니다. IG1 ON 상태에서는 autoCalOffTimer=waiting_for_ig_off로 표시됩니다.

debug 출력은 1초마다 항목별 한 줄 형식으로 표시되며, ig=true, p=false, autoPending=false처럼 bool 값은 true/false로 출력됩니다.