and I can probably only blame myself for this, but having this as an enum is probably a better way to go. [discriminatedType LogicalSegmentType [discriminator uint 3 logicalSegmentType] [typeSwitch logicalSegmentType ['0x00' ClassID [simple LogicalSegmentInstance field] ] ['0x01' InstanceID [simple LogicalSegmentInstance field] ] ['0x02' MemberID [simple LogicalSegmentInstance field] ] ] ]
[discriminatedType LogicalSegmentInstance [discriminator SegmentFormat format] [typeSwitch format ['SintField' EightBitField [simple uint 8 instance] ] ['IntField' SixteenBitField [simple uint 16 instance] ] ['DintField' SixteenBitField [simple uint 32 instance] ] ] ] [enum uint 2 SegmentFormat ['0X00' SintField ] ['0X01' IntField ] ['0X02' DintField ] ['0X03' UnknownField ] ] On Thu, Feb 22, 2024 at 4:52 AM Ben Hutcheson <ben.hut...@gmail.com> wrote: > Hi Robert, > > Looking at the code > for > plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/protocol/EipProtocolLogic.java > at line 133. It looks as though the 2 bit format value can be used as a > discriminator for the format of that field. It being 0 when it is 8 bits, > and 1 when it's 16 bits. > > Some variation of this could work. > > [discriminatedType LogicalSegmentType > [discriminator uint 3 logicalSegmentType] > [typeSwitch logicalSegmentType > ['0x00' ClassID > [simple LogicalSegmentInstance field] > ] > ['0x01' InstanceID > [simple LogicalSegmentInstance field] > ] > ['0x02' MemberID > [simple LogicalSegmentInstance field] > ] > ] > ] > > [discriminatedType LogicalSegmentInstance > [discriminator uint 2 format] > [typeSwitch format > ['0x00' EightBitField > [simple uint 8 segmentClass] > ] > ['0x01' SixteenBitField > [simple uint 16 instance] > ] > ] > ] > > Kind Regards > > Ben > > On Thu, Feb 22, 2024 at 4:25 AM R Thayer <thayer...@cox.net> wrote: > >> 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 <thayer...@cox.net> 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 <christofer.d...@c-ware.de> >> 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 <thayer...@cox.net> >> > > Datum: Freitag, 16. Februar 2024 um 02:25 >> > > An: dev@plc4x.apache.org <dev@plc4x.apache.org> >> > > 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 >> >