Code Monkey home page Code Monkey logo

Comments (8)

Inrixia avatar Inrixia commented on August 28, 2024 1

Will take a look when I get the time 👍

from pyais.

SiggyF avatar SiggyF commented on August 28, 2024 1

Thanks for implementing this feature and for the suggestions. We will test it with our datastreams.

from pyais.

M0r13n avatar M0r13n commented on August 28, 2024

@SiggyF

Thank you!

I saw such messages already, but I never found the time to actually look at them in detail. So I am glad that you did. I will take a look at your PR this weekend. 😄

from pyais.

M0r13n avatar M0r13n commented on August 28, 2024

@SiggyF

I took a look at your PR. Overall, I liked your suggested changes. But there are some details, that I would have done differently:

  • tests are missing or the existing tests even fail
  • you added a PGHPMessage class as a mixin to every AIS message
  • assertions are not a very good practice, because these are removed if optimizations are requested from Python

So, I played a bit around with your code and came up with a slightly different approach. I decided to make the parsing/decoding of NMEA messages a bit more generic. PHGP, AIVDM, and AIVDO messages are all NMEA messages - among many others. All these NMEA messages have in common, that they have a start delimiter, followed by a comma-separated sequence of fields, followed by the character '*', the checksum and an end-of-line marker. Therefore, I added a new class NMEASentence. This class encapsulates a single NMEA sentence and handles the basic stuff. This allows other classes to build upon this class.

Then there are two new classes:

  • GatehouseSentence: encapsulates PGHP messages
  • AISSentence: encapsulates AIS messages

I researched GH messages and came to the conclusion that:

GH internal messages type 1 are used for "encapsulating" NMEA messages.

The important part is that GH messages can be used to encapsulate every NMEA message - not just AIS messages. Thus, I decided to add a .meta attribute to all NMEASentences. This differs from your approach of adding the .meta attribute to every AIS message individually.

I am curious about your feedback. Can you live with my suggestions?

@Inrixia: Would you take a look at my changes? Your feedback has proven invaluable in the past. 😁

from pyais.

Inrixia avatar Inrixia commented on August 28, 2024

Changes in #93 look good.

Might be worth considering a better name than meta and it's associated functions for easier readability.

from pyais.

M0r13n avatar M0r13n commented on August 28, 2024

@Inrixia

Thanks for looking at my changes.

Might be worth considering a better name than meta

Do you have any good suggestion? I thought about this also and did not came up with a nice naming scheme. I ultimately decided to use meta, because:

  • it's kind of meta data about the message
  • it's somewhat generic: this allows to store other kinds of "meta data"

from pyais.

M0r13n avatar M0r13n commented on August 28, 2024

@Inrixia

I renamed the newly introduced .meta attribute to wrapper_msg. I think this makes the intention clear.

@SiggyF I closed your original PR. But I used much of your prior work to implement support for gatehouse wrappers. Thank you!

With Version 2.3.0 gatehouse messages are parsed by every stream class. See examples

from pyais.

Inrixia avatar Inrixia commented on August 28, 2024

@M0r13n Perfect, that is much more understandable

from pyais.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.