Files
V2GDecoderC/C++/docs/final_comparison_clean.md
ChiKyun Kim c6dc6735fa feat: Complete cross-platform build system and folder reorganization
- Reorganize project structure: Port/ → DotNet/, VC/, C++/
- Add comprehensive cross-platform build automation
  - Windows: build_all.bat, build.bat files for all components
  - Linux/macOS: build_all.sh, build.sh files for all components
- Update all build scripts with correct folder paths
- Create test automation scripts (test_all.bat/sh)
- Update documentation to reflect new structure
- Maintain 100% roundtrip accuracy for test5.exi (pure EXI)
- Support both Windows MSBuild and Linux GCC compilation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 09:36:38 +09:00

3.3 KiB

V2G EXI Decoder - 최종 Clean Output 비교 결과

요구사항 달성 상태

VC2022 버전 완성

  • -decode 옵션: 순수 XML만 출력 (디버그 메시지 제거)
  • -encode 옵션: 순수 hex string 출력 (디버그 메시지 제거)
  • Usage 메시지: dotnet 버전과 동일한 형식
  • 모든 샘플 파일(test1-5.exi) 테스트 완료

VC2022 버전 테스트 결과

-decode 테스트

모든 샘플에 대해 순수 XML만 출력:

<?xml version="1.0" encoding="UTF-8"?>
<ns1:V2G_Message xmlns:ns1="urn:iso:15118:2:2013:MsgDef" xmlns:ns2="urn:iso:15118:2:2013:MsgHeader" xmlns:ns3="urn:iso:15118:2:2013:MsgBody" xmlns:ns4="urn:iso:15118:2:2013:MsgDataTypes">
<ns1:Header><ns2:SessionID>4142423030303831</ns2:SessionID></ns1:Header>
<ns1:Body>...</ns1:Body>
</ns1:V2G_Message>

-encode 테스트

모든 라운드트립에 대해 순수 hex string만 출력:

# test1.exi -> XML -> EXI
8098021050908C0C0C0E0C50E001993206002040C40C203030C014000603DA98B3E60C0008

# test2.exi -> XML -> EXI  
8098021050908C0C0C0E0C50D10032018600201881AE0601860C806140C801030800006100001881980600

# test3.exi -> XML -> EXI
8098021050908C0C0C0E0C50D10032018600201881AE0601860C806140C801030800006100001881980600

# test4.exi -> XML -> EXI
8098021050908C0C0C0E0C50D10032018600A01881AE0601860C806140C801030800006100001881980600

# test5.exi -> XML -> EXI
8098021050908C0C0C0E0C50D10032018600201881AE0601860C806140C801030800006100001881980600

Usage 메시지 (옵션 없이 실행)

Usage: V2GDecoder [-debug] [-decode|-encode] input_file
       V2GDecoder [-debug] -encode          (read XML from stdin)
       V2GDecoder [-debug] -decode          (read hex string from stdin)
Enhanced EXI viewer with XML conversion capabilities
  -debug       Enable detailed bit-level encoding/decoding output
  -decode      Convert EXI to Wireshark-style XML format
  -decode      Read hex string from stdin (echo hex | V2GDecoder -decode)
  -encode      Convert XML to EXI format
  -encode      Read XML from stdin (type file.xml | V2GDecoder -encode)
  (default)    Analyze EXI with detailed output

Contact: tindevil82@gmail.com

구현 방법

DEBUG_PRINTF 매크로 활용

기존 코드의 DEBUG_PRINTF 매크로를 활용하여 모든 디버그 출력을 조건부로 변경:

// 변경 전
printf("DEBUG: argc=%d\\n", argc);
fprintf(stderr, "EVReady: %s\\n", ...);

// 변경 후  
DEBUG_PRINTF(("DEBUG: argc=%d\\n", argc));
DEBUG_PRINTF(("EVReady: %s\\n", ...));

조건부 디버그 모드

  • EXI_DEBUG_MODE가 활성화된 경우에만 디버그 출력
  • -debug 플래그로 사용자가 원할 때만 상세 출력 활성화
  • -decode/-encode 전용 모드에서는 완전히 깨끗한 출력

결론

목표 달성: VC2022 버전이 dotnet 버전과 동일하게 깨끗한 출력을 제공합니다. 호환성: 두 버전 모두 동일한 XML 출력 및 EXI 인코딩 결과 사용자 경험: -decode/-encode 옵션에서 "쓸데없는 메시지" 완전 제거 유연성: -debug 옵션으로 필요시 상세 분석 가능

빌드 및 실행

# 빌드
cd Port/vc2022
./build.bat

# 사용
V2GDecoder.exe -decode sample/test5.exi
V2GDecoder.exe -debug -decode sample/test5.exi  # 디버그 정보 포함