Hi Chris, yes that's what I thought so I managed to work around like this:
https://github.com/etiennerobinet/plc4x/blob/eip/protocols/eip/src/main/resources/protocols/eip/eip.mspec And this works for reading! I managed to make a quick test and read via the tag name. Now my question is: can I create sub-types that are also discriminated with sub-subtypes? That would allow to create the ReadRequest only, as the fields before are mainly constant/implicit. Etienne On 2020/03/11 20:24:14, Christofer Dutz <christofer.d...@c-ware.de> wrote: > Hi Etienne, > > you are defining the type CipRRData twice ... once as one of the sub-types of > EipPacket and once as a dedicated discriminated type. > > Chris > > > PS: I have no idea why I didn't finish writing this email and I just noticed > when closing everything down ... sorry for the late reply. > > > > Am 11.03.20, 09:30 schrieb "Etienne Robinet" <43...@etu.he2b.be>: > > Hi all, > > I have a quick question. I've been working on the CIP encapsulation but > hitting a problem with the mspec design. Here is the error I am facing: > https://i.imgur.com/iCfh59n.png > > The problem here is that this CipRRData should also be of type EipPacket. > When the command of an EipPacket is '0x66' this means SendRRData (for > Read/Write and Request/Response so I have to discriminate it on the sub > level). The problem is that after generation, CipRRData implements Message > but does not extend EipPacket. How should I do it? Here is the mspec: > > [discriminatedType 'EipPacket' > [discriminator uint 16 'command'] > [implicit uint 16 'len' 'lengthInBytes - 24'] > [simple uint 32 'sessionHandle'] > [simple uint 32 'status'] > [array uint 8 'senderContext' count '8'] > [simple uint 32 'options'] > [typeSwitch 'command' > ['0x0065' EipConnectionRequest > [const uint 16 'protocolVersion' '0x01'] > [const uint 16 'flags' '0x00'] > ] > ['0x0066' EipDisconnectRequest > ] > ['0x006F' CipRRData > [const uint 32 'EipInterface' '0x00000000'] > [const uint 8 'timeout' '0x0000'] > ] > ] > ] > [discriminatedType 'CipRRData' > [simple uint 8 'itemNb'] > [array CipItem 'items' length 'itemNb'] > [discriminator uint 8 'CipService'] > [typeSwitch 'CipService' > ['0x52' CipUnconnectedRequest > [simple CommandData 'data'] > ] > ['0xCC' CipReadResponse > [reserved uint 8 '0x0000'] > [simple uint 8 'status'] > [simple uint 8 'extStatus'] > [simple uint 8 'dataType'] > [array uint 8 'data' length 'dataType'] > > ] > ] > ] > > [type 'CipItem' > [simple uint 16 'typeID'] > [simple uint 16 'size'] > ] > > [discriminatedType 'CommandData' > [reserved uint 8 '0x02'] > [reserved uint 8 '0x20'] // > setRequestPathLogicalClassSegment > [reserved uint 8 '0x06'] // set request class path > [reserved uint 8 '0x24'] // > setRequestPathLogicalInstanceSegment > [reserved uint 8 '0x01'] // setRequestPathInstance > [discriminator uint 8 'CipService'] > [typeSwitch 'CipService' > ['0x4C' CipReadRequest > [simple uint 8 'RequestPathSize'] > [reserved uint 8 '0x91'] > [array uint 8 'tag' length '(RequestPathSize*2) > - 1'] > [reserved uint 16 '0x0001'] //itemCount set to 1 for > now > ] > ] > > ] > > > [enum int 16 'CIPDataTypeCode' [uint 8 'size'] > ['0X00C1' BOOL ['1']] > ['0X00CA' REAL ['4']] > ['0X00C4' DINT ['4']] > ['0X00C3' INT ['2']] > ['0X00C2' SINT ['1']] > ['0X02A0' STRUCTURED ['88']] > ['0X02A0' STRING ['88']] > ['0X02A0' STRING36 ['40']] > ['-1' UNKNOWN ['-1']] > ] > > > Thanks for any help! > > Etienne > On 2020/03/10 15:18:47, Etienne Robinet <43...@etu.he2b.be> wrote: > > Hi all, > > I've managed to implement the EIP Session Register/Unregister (used for > connected message which is best for high frequency fetching). I will push it > to my branch and create a document explaining my steps. > > Next I want to do was to to the CIP encapsulation part for accessing > tag by their name. The thing is, CIP is (from what I heard) proper to Allen > Bradley. Should I leave it in the EIP driver or modify and adapt the current > AB driver later on? For now I will continue on eip. > > > > Etienne > > > > On 2020/03/10 14:41:42, Cesar Garcia <cesar.gar...@ceos.com.ve> wrote: > > > Hi, > > > > > > You can document the process step by step, you will surely find > observation > > > points. > > > > > > I am working with the handwritten S7 driver, but in the future I would > > > support the team in migrate to mspec, so the experience you will gain > with > > > the Etheret / IP is very important. > > > > > > Best regards, > > > > > > El mar., 10 mar. 2020 a las 9:17, Christofer Dutz (< > > > christofer.d...@c-ware.de>) escribió: > > > > > > > Hi Etienne, > > > > > > > > I would strongly suggest you install the Antlr plugn for the IDE > you use. > > > > The problem is that ANTLR seems to gobble up a lot of errors and > tries to > > > > be smart in a lot of cases. > > > > Whenever I have problems like this I use the ANTLR visual parser to > parse > > > > a block of mspec (one type at a time) and try to narrow down the > cause. > > > > > > > > Chris > > > > > > > > > > > > > > > > Am 10.03.20, 13:31 schrieb "Etienne Robinet" <43...@etu.he2b.be>: > > > > > > > > Hi all, > > > > I've been struggling with implementing the EIP driver. I started > > > > writing the mspec after creating both a module for the protocol and > the one > > > > from the driver. I copied and adapted the pom(s) from the AB-ETH > but only > > > > the enum is generated. > > > > Here is a link to the forked branch: > > > > https://github.com/etiennerobinet/plc4x/tree/eip > > > > > > > > I've been studying the EIP/CIP protocol and now I am confident > what > > > > the packages should contain but I can not figure out how to > generate this > > > > with the templates. Am I missing something? > > > > > > > > Etienne > > > > > > > > > > > > > > > > > > -- > > > *CEOS Automatización, C.A.* > > > *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,* > > > *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,* > > > > > > *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI* > > > *Ing. César García* > > > *Cel: 0416-681.03.99* > > > > > > *Cel: 0414-760.98.95* > > > > > > *Hotline Técnica SIEMENS: 0800 1005080* > > > > > > *Email: support.aan.automat...@siemens.com > > > <support.aan.automat...@siemens.com>* > > > > > > > >