Self describing push#12
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds support for parsing Landis+Gyr E450 “self-describing push” (unencrypted HDLC, Cyprus capture) by teaching the AXDR parser to interpret the embedded capture-object definition array and zip it with subsequent values, and adds an integration test + fixtures for the Cyprus dump.
Changes:
- Add
AxdrParser::parse_self_describing_push_()and try it before the existing pattern-based traversal. - Add a new HDLC integration test case for “Landis+Gyr E450 Cyprus”.
- Add the Cyprus dump fixture (raw hex + decoded XML) and expected parsed outputs.
Reviewed changes
Copilot reviewed 5 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_meter_dumps.cpp | Registers a new integration subcase for the Cyprus Landis+Gyr E450 dump. |
| tests/expected/hdlc_landis_gyr_e450_cyprus.h | Adds raw frame bytes and expected OBIS→value mappings for the Cyprus dump. |
| tests/dumps/hdlc_landis_gyr_e450_cyprus.log | Adds the captured raw HDLC frame bytes. |
| tests/dumps/hdlc_landis_gyr_e450_cyprus_decoded.xml | Adds a decoded representation of the notification payload for reference. |
| src/dlms_parser/axdr_parser.h | Declares the new self-describing push parse helper. |
| src/dlms_parser/axdr_parser.cpp | Implements self-describing push parsing and hooks it into parse(). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
What is this "Self-Describing Push"? |
|
The smart meter sends a schema defining its data layout, followed by the actual values. They should be in the same order so we can match the values to the obis codes. "Self-Describing Push" isn't defined, I just came up with a name. I'm not sure ho its "supposed to work". I just made the dump work. |
I have attempted to make #11 dump work with the parser. Definitely needs review.