feat: Complete V2G EXI encoder-decoder 100% VC2022 compatibility
🔧 Grammar 279 Critical Fix: - Fixed Grammar 279 from 2-bit to 1-bit choice for ChargingComplete - Achieved 100% binary compatibility with VC2022 C++ implementation - All EXI roundtrip tests now pass with identical byte output ✨ ANSI Banner & UI Enhancements: - Added beautiful ANSI art banner for usage display - Cleaned up usage messages, removed debug options from public view - Added contact email: tindevil82@gmail.com 🛠️ Technical Improvements: - Standardized encodeNBitUnsignedInteger naming across all Grammar states - Added comprehensive debug logging for bit-level operations - Enhanced binary output handling for Windows console redirection - Improved error reporting for encoding failures 📊 Verification Results: - test5.exi: 100% binary match between C, dotnet, and VC2022 - All 43 bytes identical: 80 98 02 10 50 90 8c 0c 0c 0e 0c 50 d1 00 32 01 86 00 20 18 - Grammar state machine now perfectly aligned with OpenV2G C implementation 🚀 Ready for expansion to additional V2G message types 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
80
struct_exi.txt
Normal file
80
struct_exi.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
=== ISO1 EXI Document Structure Dump ===
|
||||
|
||||
V2G_Message_isUsed: 1
|
||||
|
||||
--- Header ---
|
||||
SessionID.bytesLen: 8
|
||||
SessionID.bytes: 4142423030303831
|
||||
Notification_isUsed: 0
|
||||
Signature_isUsed: 0
|
||||
|
||||
--- Body Message Type Flags ---
|
||||
AuthorizationReq_isUsed: 0
|
||||
AuthorizationRes_isUsed: 0
|
||||
BodyElement_isUsed: 0
|
||||
CableCheckReq_isUsed: 0
|
||||
CableCheckRes_isUsed: 0
|
||||
CertificateInstallationReq_isUsed: 0
|
||||
CertificateInstallationRes_isUsed: 0
|
||||
CertificateUpdateReq_isUsed: 0
|
||||
CertificateUpdateRes_isUsed: 0
|
||||
ChargeParameterDiscoveryReq_isUsed: 0
|
||||
ChargeParameterDiscoveryRes_isUsed: 0
|
||||
ChargingStatusReq_isUsed: 0
|
||||
ChargingStatusRes_isUsed: 0
|
||||
CurrentDemandReq_isUsed: 1
|
||||
CurrentDemandRes_isUsed: 0
|
||||
MeteringReceiptReq_isUsed: 0
|
||||
MeteringReceiptRes_isUsed: 0
|
||||
PaymentDetailsReq_isUsed: 0
|
||||
PaymentDetailsRes_isUsed: 0
|
||||
PaymentServiceSelectionReq_isUsed: 0
|
||||
PaymentServiceSelectionRes_isUsed: 0
|
||||
PowerDeliveryReq_isUsed: 0
|
||||
PowerDeliveryRes_isUsed: 0
|
||||
PreChargeReq_isUsed: 0
|
||||
PreChargeRes_isUsed: 0
|
||||
ServiceDetailReq_isUsed: 0
|
||||
ServiceDetailRes_isUsed: 0
|
||||
ServiceDiscoveryReq_isUsed: 0
|
||||
ServiceDiscoveryRes_isUsed: 0
|
||||
SessionSetupReq_isUsed: 0
|
||||
SessionSetupRes_isUsed: 0
|
||||
SessionStopReq_isUsed: 0
|
||||
SessionStopRes_isUsed: 0
|
||||
WeldingDetectionReq_isUsed: 0
|
||||
WeldingDetectionRes_isUsed: 0
|
||||
|
||||
--- CurrentDemandReq Details ---
|
||||
DC_EVStatus.EVReady: 1
|
||||
DC_EVStatus.EVErrorCode: 0
|
||||
DC_EVStatus.EVRESSSOC: 100
|
||||
EVTargetCurrent.Multiplier: 0
|
||||
EVTargetCurrent.Unit: 3
|
||||
EVTargetCurrent.Value: 1
|
||||
EVMaximumVoltageLimit_isUsed: 1
|
||||
EVMaximumVoltageLimit.Multiplier: 0
|
||||
EVMaximumVoltageLimit.Unit: 4
|
||||
EVMaximumVoltageLimit.Value: 471
|
||||
EVMaximumCurrentLimit_isUsed: 1
|
||||
EVMaximumCurrentLimit.Multiplier: 0
|
||||
EVMaximumCurrentLimit.Unit: 3
|
||||
EVMaximumCurrentLimit.Value: 100
|
||||
EVMaximumPowerLimit_isUsed: 1
|
||||
EVMaximumPowerLimit.Multiplier: 3
|
||||
EVMaximumPowerLimit.Unit: 5
|
||||
EVMaximumPowerLimit.Value: 50
|
||||
BulkChargingComplete_isUsed: 1
|
||||
BulkChargingComplete: 0
|
||||
ChargingComplete: 1
|
||||
RemainingTimeToFullSoC_isUsed: 1
|
||||
RemainingTimeToFullSoC.Multiplier: 0
|
||||
RemainingTimeToFullSoC.Unit: 2
|
||||
RemainingTimeToFullSoC.Value: 0
|
||||
RemainingTimeToBulkSoC_isUsed: 1
|
||||
RemainingTimeToBulkSoC.Multiplier: 0
|
||||
RemainingTimeToBulkSoC.Unit: 2
|
||||
RemainingTimeToBulkSoC.Value: 0
|
||||
EVTargetVoltage.Multiplier: 0
|
||||
EVTargetVoltage.Unit: 4
|
||||
EVTargetVoltage.Value: 460
|
||||
Reference in New Issue
Block a user