The more I think of it, the more I come to the conclusion that I should just 
use "const" fields and only model real fields for the actual information. This 
dramatically reduces the memory footprint of the model and simplifies working 
with objects as all you have are some simple properties like 
"subscriberProcessIdentifier" and don't need to construct or navigate through 2 
additional object layers.

It is some more work in modeling the spec but copy +paste is my friend 😉

Chris

Holen Sie sich Outlook für Android<https://aka.ms/ghei36>

________________________________
From: Christofer Dutz <christofer.d...@c-ware.de>
Sent: Saturday, September 21, 2019 4:10:34 PM
To: dev@plc4x.apache.org <dev@plc4x.apache.org>
Subject: [CODEGEN] Some thoughts "restrictions" of types

Hi all,

In the BACnet protocol I encountered something new (Who would have thought?)

Here sort of everything is encoded with so called Tags. These have a fixed 
structure and a variable payload.
Now depending on the type of request there are fixed sequences of tags coming 
in. So the first Tag has meaning X, the seconds Y, …
The thing is I would like to sort of say: Here comes a Tag, but with fixed 
portions set to certain values.

So let’s take the BACnetTag definition:

[discriminatedType 'BACnetTag'
    [simple        uint 4 'typeOrTagNumber']
    [discriminator uint 1 'contextSpecificTag']
    [simple        uint 3 'lengthValueType']
    …
]

And a the following request:


['0x05' BACnetConfirmedServiceRequestSubscribeCOV
    [simple BACnetTag 'subscriberProcessIdentifier']
    [simple BACnetTag 'monitoredObjectIdentifier']
    [simple BACnetTag 'issueConfirmedNotifications']
    [simple BACnetTag 'lifetime']
]

It is not 100% correct, because I am expecting a tag with:
Type = 0
Context = 1
Length = 1
Which 1-byte payload is treated as 'subscriberProcessIdentifier'
So I sort of need to come up with a notation for this … any ideas?

Chris

Reply via email to