- Complete analysis of original C program message format support - VC2022 and dotnet version implementation status comparison - Clean output implementation documentation - Message priority recommendations for ISO 15118-2 compliance Analysis shows: ✅ CurrentDemandReq/Res fully implemented in all versions 📋 17 additional message types have structures but need XML parsing logic 🎯 8 core messages identified as high priority for DC charging compliance 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.3 KiB
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 # 디버그 정보 포함