Hi Otto,

I haven't opened any ... at the moment I'm trying to learn how to write schemas 
and have Daffodil parse them.
Right now I'm still in the phase of learning things. Even if when helping me, 
they did notice a regression that they opened an issue themselves ;-)

Chris

Am 15.01.19, 13:13 schrieb "Otto Fowler" <[email protected]>:

    Maybe Chris can post the Jira Issues he has opened in Daffodil?
    
    
    On January 15, 2019 at 04:33:20, Julian Feinauer (
    [email protected]) wrote:
    
    Hi Chris,
    
    thank you so much for your effort.
    I think this ist he right way to go forward and get more languages
    on-board.
    Hopefully, we can gather some interest in the Daffodil community that it
    doesn't all last on your shoulders (as I'm not capable of helping out
    currently).
    
    But perhaps also someone else from the list has an interest to jump in? : )
    
    Best
    Julian
    
    Am 15.01.19, 10:24 schrieb "Christofer Dutz" <[email protected]>:
    
    Hi all,
    
    just some feedback on my efforts towards formal definition of protocol
    message types:
    
    It seems that DFDL is a perfect match for defining the data formats.
    Right now I'm working hard on writing a DFDL schema for the S7 Protocol as
    this has quite a number of "specialities" that provide a challenge when
    writing such a definition.
    As soon as that's finished I guess we know if this is the way to go.
    
    Unfortunately this is where the real work begins. As Daffodil (The Apache
    implementation of a DFDL framework ... the other one is from IBM but not so
    feature-rich) parses any data using DFDL schemas into a JSON or XML
    presentation.
    What it currently doesn't do is parse into a generic model and/or generate
    code.
    
    This is where I will probably have to invest some time in the Apache
    Daffodil Incubator podling and help them implement the missing parts.
    I know this is quite some work, but it will be a HUGE benefit for our
    project and it will also help our brother project greatly.
    
    What will be possible with Daffodil, is that we can replace the "pcapng"
    binary captures with XML (or JSON) versions which Daffodil can already
    serialize to binary data for tests ... So we get human readable test-case
    input.
    We can dump incoming packets into a human readable form and eventually
    (automatically) generate test-case input for inspecting IO problems.
    Also could we implement a low-performance version of new protocols, by
    using the existing Daffodil parsers/serializers to process a protocol
    specification to and from XML/JSON ... this should be a huge benefit for
    new-protocol-implementors.
    As soon as a protocol is roughly implemented, we can switch to generated
    model, (de)serializers.
    
    So far the update and a little excuse for my silence ;-)
    
    Chris
    
    
    Am 10.01.19, 10:41 schrieb "Christofer Dutz" <[email protected]>:
    
    Hi Markus,
    
    that is not quite true.
    
    In some cases definitely yes, but I'm currently looking into the option of
    using DFDL (Apache Daffodil) for this.
    The way I would like to do it, would be to use DFDL to describe the format
    and then generate code from that with a general purpose generator for which
    we can provide the code-generation templates.
    This way we would have to write these templates once and exactly for PLC4X
    and then have all protocols generated to perfectly fit.
    
    Right now I am not doing anything different ... I'm trying to refactor
    things in a way that is as generic as possible without any performance
    drawbacks and then to adjust one protocol after the other to match that.
    
    I would like to automate this.
    
    So as soon as a new language should be supported, someone would setup the
    general skeleton driver, write a prototype and then convert that into
    templates and "presto" we get all the layers generated.
    
    At least that's what I'm currently thinking of.
    
    Chris
    
    
    
    Am 10.01.19, 10:33 schrieb "Markus Sommer" <[email protected]>:
    
    Hello everyone,
    
    If we go the way of automatic object generation for messages, then we will
    have to live with performance degradation.
    
    Best regards
    
    Markus
    
    Mit freundlichen Grüßen
    
    Markus Sommer
    Geschäftsführer
    
    isb innovative software businesses GmbH
    Otto-Lilienthal-Straße 2
    D 88046 Friedrichshafen
    
    Tel +49 (0) 7541 3834-14
    Fax +49 (0) 7541 3834-20
    Mobil +49 (0) 171 537 8437
    
    Mail to [email protected]
    http://www.isb-fn.de
    
    Geschäftsführer: Markus Sommer, Thomas Zeler
    Registergericht: Amtsgericht Ulm HRB-Nr. 631624
    Important Note: This e-mail and any attachments are confidential, may
    contain trade secrets and may well also be legally privileged or otherwise
    protected from disclosure. If you have received it in error, you are on
    notice of its status. Please notify us immediately by reply e-mail and then
    delete this e-mail and any attachment from your system. If you are not the
    intended recipient please understand that you must not copy this e-mail or
    any attachments or disclose the contents to any other person.
    Thank you.
    
    
    
    -----Ursprüngliche Nachricht-----
    Von: Christofer Dutz <[email protected]>
    Gesendet: Mittwoch, 9. Januar 2019 18:59
    An: [email protected]
    Betreff: Re: Antwort: Re: Antwort: Re: Antwort: Re: Antwort: Re: Anyone got
    experience with "protocol buffers" or DFDL (for generation of the message
    (de)serialization code)?
    
    Well I thought that went could use what's already there as I was expecting
    us but to be the first. But I haven't found an option that works.
    
    Of course whipping up a coffee generator is quite simple (done it loads of
    times) but you have to come up with the serialisation for all supported
    languages ourself. I wanted to avoid that, cause it's a lot of work.
    
    I think we should do a little more evaluating. If we don't find anything
    well go down that path.
    
    But having plugins used in a build that are also part of the build itself
    introduces more issues. So perhaps becoming involved in the daffodil
    project and adding a code generator there is the better option. (Code
    generator in Daffodil and generation templates here)
    
    Chris
    
    Outlook for Android<https://aka.ms/ghei36> herunterladen
    
    ________________________________
    From: Julian Feinauer <[email protected]>
    Sent: Wednesday, January 9, 2019 6:46:14 PM
    To: [email protected]
    Subject: Re: Antwort: Re: Antwort: Re: Antwort: Re: Antwort: Re: Anyone got
    experience with "protocol buffers" or DFDL (for generation of the message
    (de)serialization code)?
    
    Okay, I see...
    When I learned something, that tooling is really important, and it makes me
    a bit of sorrows that DFDL is not there yet.
    Do I take things too simple if we would just starting using something like
    json (or xml, as I think chris likes xml better) to define these messages
    and then implement a (very simple) converter to the class format?
    Shouldn’t this be doable?
    
    Of course there's still the lack of a Maven Plugin but I think this could
    be made easily (????) if its just invocing a method (or we do something
    like ant task voodoo to invoke it via CMD).
    But at least we would have nice syntax highlighting and such stuff and
    could rely on Jackson to get the files to a Java Input (and in case of xml
    we could also do validation directly and generate nice HTML documentatsions
    via xlst).
    
    Am I missing something or take things too simple?
    
    Best
    Julian
    
    Am 09.01.19, 18:26 schrieb "Christofer Dutz" <[email protected]>:
    
    Hi Julian,
    
    Yes exactly ... Unfortunately the messages are composed of different types
    of structures. Header, parameters of different type and length, payloads of
    different type. But in general, yes
    
    Chris
    
    Outlook for Android<https://aka.ms/ghei36> herunterladen
    
    ________________________________
    From: Julian Feinauer <[email protected]>
    Sent: Wednesday, January 9, 2019 6:16:01 PM
    To: [email protected]
    Subject: Re: Antwort: Re: Antwort: Re: Antwort: Re: Antwort: Re: Anyone got
    experience with "protocol buffers" or DFDL (for generation of the message
    (de)serialization code)?
    
    Hi Chris,
    
    I'm not sure if I got it right, but what we would need is a way to generate
    classes in multiple languages based on a message definition, or?
    So we say something like
    Bit, byte, byte, bit
    And it generates a class (or struct?) which deserializes / serializes to
    that, or?
    
    Sorry for that (probably) dump question but I got a bit confused by this
    protobuf / thrift approach.
    
    Julian
    
    Am 09.01.19, 17:49 schrieb "Christofer Dutz" <[email protected]>:
    
    Hi Sebastian,
    
    Well in general the difference between a read and a write in S7 is one byte
    value ;-)
    The overall structure is somewhat identical.
    
    Chris
    
    
    
    Von: Sebastian Wiendl <[email protected]>
    Antworten an: "[email protected]" <[email protected]>
    Datum: Mittwoch, 9. Januar 2019 um 17:21
    An: "[email protected]" <[email protected]>
    Betreff: Antwort: Re: Antwort: Re: Antwort: Re: Antwort: Re: Anyone got
    experience with "protocol buffers" or DFDL (for generation of the message
    (de)serialization code)?
    
    The developer's struggle: Which foot to shoot yourself in. ;-)
    
    I have no detailed knowledge about the protocols you want to
    serialize/deserialize - maybe they are simple enough that the mentioned
    early serialization features of Kaitai are sufficient. If not, I wouldn't
    recommend using it.
    
    Another aspect might be the anticipated distribution of read and write
    workloads of a typical PLC4X application - if its mostly reads it might
    still be worth a try, because you save a lot of (implementation) effort on
    the deserialization which frees up resources for serialization or other
    things in general.
    
    Mit freundlichen Grüßen
    Kind regards
    
    Sebastian Wiendl
    DSE / Digital Solutions Software Engineer
    Phone: +49 9605 919 - 9341
    E-Mail: [email protected]
    Internet: http://www.bhs-world.com
    ________________________________
    [cid:_1_13C7BE3013C7BA340059D4ACC125837D]
    
    BHS Corrugated Maschinen- und Anlagenbau GmbH
    Paul-Engel-Straße 1
    92729 WEIHERHAMMER
    GERMANY
    
    Management: Christian Engel, Lars Engel, Norbert Städele
    Registered at Amtsgericht Weiden, HR B 1320
    
    [cid:_2_13C7CB4413C7C7340059D4ACC125837D]
    
    
    ________________________________
    
    
    Diese Nachricht ist nur für den Empfänger bestimmt, da sie persönliche
    und/oder rechtlich geschützte Informationen und vertrauliche Informationen
    enthält.
    Der Inhalt darf an keinen anderen außer an den Empfänger weitergeleitet
    werden. Unbefugte Empfänger werden gebeten, diese Vertraulichkeit zu wahren
    und den Absender sofort von diesem Übertragungsfehler in Kenntnis zu
    setzen.
    Vernichten Sie diese Nachricht. Das unerlaubte Kopieren sowie die unbefugte
    Weitergabe dieser Nachricht ist nicht gestattet.
    
    This message is intended for the addressee only as it contains private
    and/or privileged and confidential information.
    The contents are not to be disclosed to anyone else than the addressee.
    Unauthorized recipients are requested to comply with the above and to
    inform the sender immediately of any errors in transmission and destroy
    this e-mail.
    Any unauthorized copying, disclosure or distribution of the material in
    this e-mail is strictly prohibited.
    
    
    
    
    Von: "Christofer Dutz" <[email protected]>
    An: "[email protected]" <[email protected]>
    Datum: 09.01.2019 17:09
    Betreff: Re: Antwort: Re: Antwort: Re: Antwort: Re: Anyone got experience
    with "protocol buffers" or DFDL (for generation of the message
    (de)serialization code)?
    ________________________________
    
    
    
    Hi Sebastian,
    
    yeah … I asked in the Incubator list and they told me it would be safe to
    use, if the output was not GPLed …
    
    so I contacted the maintainer of the project and simply asked him.
    He told me that the output would match the input license. So if our
    definitions would be Apache 2.0, so would the output … so it seems we would
    be safe and able to use that.
    However he also told me this:
    
    “That's great news! Please note, however, that serialization is in its
    early stages in Kaitai Struct, so it might be no exactly up to your
    expectations.“
    
    So I don’t know if we should go down that path … right now … :-/
    
    Chris
    
    
    
    Von: Sebastian Wiendl <[email protected]>
    Antworten an: "[email protected]" <[email protected]>
    Datum: Mittwoch, 9. Januar 2019 um 16:46
    An: "[email protected]" <[email protected]>
    Betreff: Antwort: Re: Antwort: Re: Antwort: Re: Anyone got experience with
    "protocol buffers" or DFDL (for generation of the message (de)serialization
    code)?
    
    Another thing to consider: Last time I checked Kaitai only supported
    deserialization (https://github.com/kaitai-io/kaitai_struct/issues/27).
    Might be inconvenient to introduce another framework for serialization...
    
    Mit freundlichen Grüßen
    Kind regards
    
    Sebastian Wiendl
    DSE / Digital Solutions Software Engineer
    Phone: +49 9605 919 - 9341
    E-Mail: [email protected]
    Internet: http://www.bhs-world.com<http://www.bhs-world.com/>
    ________________________________
    [cid:_1_147DDC68147DD8840056A390C125837D]
    
    BHS Corrugated Maschinen- und Anlagenbau GmbH
    Paul-Engel-Straße 1
    92729 WEIHERHAMMER
    GERMANY
    
    Management: Christian Engel, Lars Engel, Norbert Städele
    Registered at Amtsgericht Weiden, HR B 1320
    
    [cid:_2_147DE97C147DE56C0056A390C125837D]
    
    
    ________________________________
    
    
    Diese Nachricht ist nur für den Empfänger bestimmt, da sie persönliche
    und/oder rechtlich geschützte Informationen und vertrauliche Informationen
    enthält.
    Der Inhalt darf an keinen anderen außer an den Empfänger weitergeleitet
    werden. Unbefugte Empfänger werden gebeten, diese Vertraulichkeit zu wahren
    und den Absender sofort von diesem Übertragungsfehler in Kenntnis zu
    setzen.
    Vernichten Sie diese Nachricht. Das unerlaubte Kopieren sowie die unbefugte
    Weitergabe dieser Nachricht ist nicht gestattet.
    
    This message is intended for the addressee only as it contains private
    and/or privileged and confidential information.
    The contents are not to be disclosed to anyone else than the addressee.
    Unauthorized recipients are requested to comply with the above and to
    inform the sender immediately of any errors in transmission and destroy
    this e-mail.
    Any unauthorized copying, disclosure or distribution of the material in
    this e-mail is strictly prohibited.
    
    
    
    
    Von: "Christofer Dutz" <[email protected]>
    An: "[email protected]" <[email protected]>
    Datum: 09.01.2019 15:57
    Betreff: Re: Antwort: Re: Antwort: Re: Anyone got experience with "protocol
    buffers" or DFDL (for generation of the message (de)serialization code)?
    ________________________________
    
    
    
    The thing is that we would actually not be bundling that … the compiler is
    only used during the build and not at runtime.
    I am currently double-checking this with the others in the incubator
    mailing-list.
    
    So it’s not completely impossible … let’s see what the others have to say
    about it.
    
    But I agree … it does look as if it would suit our needs.
    
    Chris
    
    
    Von: Sebastian Wiendl <[email protected]>
    Antworten an: "[email protected]" <[email protected]>
    Datum: Mittwoch, 9. Januar 2019 um 15:42
    An: "[email protected]" <[email protected]>
    Betreff: Antwort: Re: Antwort: Re: Anyone got experience with "protocol
    buffers" or DFDL (for generation of the message (de)serialization code)?
    
    Yeah, i just checked... bummer the compiler is GPLed...
    
    The project itself has some really good ideas how to handle binary parsing.
    I used it prototypically in decoding a proprietary UDP message format and
    it worked great.
    
    Mit freundlichen Grüßen
    Kind regards
    
    Sebastian Wiendl
    DSE / Digital Solutions Software Engineer
    Phone: +49 9605 919 - 9341
    E-Mail: [email protected]
    Internet: http://www.bhs-world.com<http://www.bhs-world.com/><
    http://www.bhs-world.com/>
    ________________________________
    [cid:_1_147D3C84147D38880050BA3BC125837D]
    
    BHS Corrugated Maschinen- und Anlagenbau GmbH
    Paul-Engel-Straße 1
    92729 WEIHERHAMMER
    GERMANY
    
    Management: Christian Engel, Lars Engel, Norbert Städele
    Registered at Amtsgericht Weiden, HR B 1320
    
    [cid:_2_147D4998147D45880050BA3BC125837D]
    
    
    ________________________________
    
    
    Diese Nachricht ist nur für den Empfänger bestimmt, da sie persönliche
    und/oder rechtlich geschützte Informationen und vertrauliche Informationen
    enthält.
    Der Inhalt darf an keinen anderen außer an den Empfänger weitergeleitet
    werden. Unbefugte Empfänger werden gebeten, diese Vertraulichkeit zu wahren
    und den Absender sofort von diesem Übertragungsfehler in Kenntnis zu
    setzen.
    Vernichten Sie diese Nachricht. Das unerlaubte Kopieren sowie die unbefugte
    Weitergabe dieser Nachricht ist nicht gestattet.
    
    This message is intended for the addressee only as it contains private
    and/or privileged and confidential information.
    The contents are not to be disclosed to anyone else than the addressee.
    Unauthorized recipients are requested to comply with the above and to
    inform the sender immediately of any errors in transmission and destroy
    this e-mail.
    Any unauthorized copying, disclosure or distribution of the material in
    this e-mail is strictly prohibited.
    
    
    
    
    Von: "Christofer Dutz" <[email protected]>
    An: "[email protected]" <[email protected]>
    Datum: 09.01.2019 15:37
    Betreff: Re: Antwort: Re: Anyone got experience with "protocol buffers" or
    DFDL (for generation of the message (de)serialization code)?
    ________________________________
    
    
    
    Hi Sebasitan,
    
    thanks for that pointer … unfortunately I think we might be unable to use
    this option as the compiler is GPLv3 licensed … that is a category X
    license.
    Even if the compiler is not bundled with our software or used at runtime
    (will probably only need it at compile-time), I doubt we would be allowed
    to use it.
    
    But still I’ll look into it …
    
    Chris
    
    Von: Sebastian Wiendl <[email protected]>
    Antworten an: "[email protected]" <[email protected]>
    Datum: Mittwoch, 9. Januar 2019 um 15:18
    An: "[email protected]" <[email protected]>
    Betreff: Antwort: Re: Anyone got experience with "protocol buffers" or DFDL
    (for generation of the message (de)serialization code)?
    
    Hi,
    
    maybe the Kaitai Struct project (https://kaitai.io/) can help you achieve
    this?
    
    Mit freundlichen Grüßen
    Kind regards
    
    Sebastian Wiendl
    DSE / Digital Solutions Software Engineer
    Phone: +49 9605 919 - 9341
    E-Mail: [email protected]
    Internet: http://www.bhs-world.com<http://www.bhs-world.com/><
    http://www.bhs-world.com/><http://www.bhs-world.com/>
    ________________________________
    [cid:_1_0DB11BC80DB117CC004E9C08C125837D]
    
    BHS Corrugated Maschinen- und Anlagenbau GmbH
    Paul-Engel-Straße 1
    92729 WEIHERHAMMER
    GERMANY
    
    Management: Christian Engel, Lars Engel, Norbert Städele
    Registered at Amtsgericht Weiden, HR B 1320
    
    [cid:_2_0DB128DC0DB124CC004E9C08C125837D]
    
    
    ________________________________
    
    
    Diese Nachricht ist nur für den Empfänger bestimmt, da sie persönliche
    und/oder rechtlich geschützte Informationen und vertrauliche Informationen
    enthält.
    Der Inhalt darf an keinen anderen außer an den Empfänger weitergeleitet
    werden. Unbefugte Empfänger werden gebeten, diese Vertraulichkeit zu wahren
    und den Absender sofort von diesem Übertragungsfehler in Kenntnis zu
    setzen.
    Vernichten Sie diese Nachricht. Das unerlaubte Kopieren sowie die unbefugte
    Weitergabe dieser Nachricht ist nicht gestattet.
    
    This message is intended for the addressee only as it contains private
    and/or privileged and confidential information.
    The contents are not to be disclosed to anyone else than the addressee.
    Unauthorized recipients are requested to comply with the above and to
    inform the sender immediately of any errors in transmission and destroy
    this e-mail.
    Any unauthorized copying, disclosure or distribution of the material in
    this e-mail is strictly prohibited.
    
    
    
    
    Von: "Christofer Dutz" <[email protected]>
    An: "[email protected]" <[email protected]>
    Datum: 09.01.2019 15:06
    Betreff: Re: Anyone got experience with "protocol buffers" or DFDL (for
    generation of the message (de)serialization code)?
    ________________________________
    
    
    
    Hi all,
    
    Ok ... so protobuf seems to be semi-ideal ...
    
    It seems that you can use it to model the structure of data. Protobuf is
    good for generating model classes, parsers and serializers for a given
    model ... the binary data-format is a result of this.
    
    We want the opposite: We want to generate a model from a known output
    data-format. In general this could be somehow achieved with protobuf,
    however it is very difficult to produce the definition in a way that it is
    able to parse a given data format.
    For example simply outputting one byte seems to be problematic. I was able
    to somehow hack an enum and provide some extension to allow providing code
    values, but we don't have the level of control we would need to and the
    result is not very readable.
    I was able to quite easily setup the maven build to generate java code for
    parsing and serializing a model ... so that was good.
    
    DFDL looks as if it's ideal for describing the data format, however I
    couldn't find tooling to generate model, parser and serializer from a DFDL
    definition. I subscribed to our brother incubating project Daffodil and
    asked on their list ... perhaps I have to get my hands dirty and implement
    the maven plugin and code generators as part of that project ... I am
    hoping not having to do that.
    
    I'll check out Thrift in parallel ;-)
    
    
    Chris
    
    
    
    Am 09.01.19, 11:19 schrieb "Christofer Dutz" <[email protected]>:
    
    From my first look at thrift some time ago, that's more about API and not
    about the actual payload, is it?
    
    How about I try to do a protobuf version of the "s7-protocol" and you give
    thrift a try? Another option would be the DFDL option.
    
    Chris
    
    Am 09.01.19, 11:13 schrieb "Julian Feinauer" <[email protected]>:
    
    
    Hi Chris,
    
    we worked (and work) with Thrift [1] at several places.
    Thrift is a strong contender to protobuf and both have their specific
    advantages and disadvantages.
    Perhaps I would prefer Thrift as it comes from the Apache Ecosystm (and
    supports more langauges) but generally, Tim can say more about working with
    Thrift.
    
    Best
    Julian
    
    [1] https://thrift.apache.org/
    
    Am 09.01.19, 10:45 schrieb "Christofer Dutz" <[email protected]>:
    
    Hi all,
    
    while I’m currently working on refactoring the S7 driver to a simpler
    structure so we can convert it to other languages more easily. A colleague
    of mine pointed me to protobuf/protocol buffers from google [1]
    From a quick look at it, it does seem as if it could suit our needs quite
    nicely. I would like to try out if it’s possible to model the S7 data
    structures in this way. If it works we could eventually quickly create
    something that serializes/deserializes given data in any language …
    
    It seems to be a lot simpler than the DFDL [2] I was thinking of, so guess
    we have to find out if it has all the capabilities we need.
    
    Any thoughts?
    
    Chris
    
    
    
    
    [1] https://developers.google.com/protocol-buffers/docs/javatutorial
    [2] https://en.wikipedia.org/wiki/Data_Format_Description_Language
    

Reply via email to