Chris, all,
What is the recommended way to define the spec in the
plc4x/protocols/eip/src/main/resources/protocols/eip/eip.mspec
The current definitions for
PathSegment/LogicalSegment/InstanceSegment/InstanceId are defined for 8-bit
values (see below). We have live traffic for a 0x52 CipConnectedRead request
that contains 16-bit values for both the path segment and the instance ID, e.g.
0x25002000 w the instance being LE. There are class segment and a member
segment are both 8-bit. the format 2 bit value is 1 for the instance.
We can overload the LogicalSegment with a LogicalSegment16, but as the format
value is currently read down in the instance segment, i wasn't sure how to
approach it. It is straightforward to edit the generated java to read ahead
but that doesn't fit the mspec way (afaik).
This is part of a MultiServiceRequest where Service #1 includes an 8-bit
instanceId and Services #12 
 include the 16-bit.
I can see how the decriminator fields but wasn't sure how to define the look
ahead so that is generated properly.
Any thoughts?
Thanks!
Bob
[discriminatedType PathSegment
[discriminator uint 3 pathSegment ]
[typeSwitch pathSegment
['0x00' PortSegment
[simple PortSegmentType segmentType]
]
['0x01' LogicalSegment
[simple LogicalSegmentType segmentType]
]
['0x04' DataSegment
[simple DataSegmentType segmentType]
]
]
]
[discriminatedType LogicalSegmentType
[discriminator uint 3 logicalSegmentType]
[typeSwitch logicalSegmentType
['0x00' ClassID
[simple uint 2 format]
[simple uint 8 segmentClass]
]
['0x01' InstanceID
[simple uint 2 format]
[simple uint 8 instance]
]
['0x02' MemberID
[simple uint 2 format]
[simple uint 8 instance]
]
]
]
[type InstanceSegment
[simple uint 3 pathSegmentType]
[simple uint 3 logicalSegmentType]
[simple uint 2 logicalSegmentFormat]
[simple uint 8 instance]
]
> On 02/16/2024 2:56 PM EST R Thayer <[email protected]> wrote:
>
>
> Chris,
>
> I created a fresh instance of the plc4x project and ran
>
> ./mvnw -P update-generated-code,.os-mac-x86_64,skip-prerequisite-check -pl
> :plc4j-driver-eip -am clean package
>
> which ran to completion and regenerated the files. As a sanity check I
> updated the eip.mspec with one of my changes and reran the compiler and it
> worked as expected.
>
> Thanks for the quick response and pointer!
>
> Bob
>
>
>
> > On 02/16/2024 1:32 AM EST Christofer Dutz <[email protected]> wrote:
> >
> >
> > Hi Robert,
> >
> > happy to help you with that.
> >
> > In general, I’ll be working on updating the documentation after the next
> > release (which I’ll start after finishing this mail)
> > But for now: We’ve introduced some minor changes to the build, so you’ll
> > need to make sure the following maven profiles are enabled:
> >
> >
> > * with-java (Without it, generally nothing java-related will be built
> > at all)
> > * update-generated-code (Without it, the code generation will not be
> > performed at all)
> >
> >
> > So, if you run the following command:
> >
> >
> > ./mvnw -Pwith-java,update-generated-code -pl :plc4j-driver-eip -am clean
> > package
> >
> > It will generally build the java eip driver and all modules it depends on.
> >
> > Hope that helps and looking forward to some pull-requests ;-)
> >
> >
> > Chris
> >
> >
> >
> > Von: R Thayer <[email protected]>
> > Datum: Freitag, 16. Februar 2024 um 02:25
> > An: [email protected] <[email protected]>
> > Betreff: Re: Re-generated Generated Sources
> > All,
> > What is the process to regenerate generated sources?
> >
> > New to plc4x but have live EIP/CIP traffic that i'm trying to model with
> > the eip.mspec and need to close the circle of eip.mspec==>generated-code in
> > the plc4j/drivers/eip/src/main/generated to verify correct mspec. Working
> > through ParserSerializerTestsuiteLittleEndian.xml to model
> > MultipleServiceR/R
> >
> > The website discusses it and suggests "mvn compile".
> > This thinks it works but does not regenerate nor replace the files.
> >
> > Thanks,
> >
> > Robert Thayer
> > CC Software, Inc.
> > 702-726-1034