VITA49 questions

  • 2
  • Question
  • Updated 2 years ago
  • Answered
  • (Edited)
One for Eric, I suspect:

One of the things I discover when I try to write about a subject is how little I actually know about it! I'm trying to better understand VITA49 and how FlexRadio uses it. VITA49 documentation on t'Internet is in very short supply!

I see that you use different stream identifiers for Discovery and Meter packets:

0x00 00 08 00      for Discovery packets
0x00 00 07 00      for Meter packets


and that you also have different class identifiers

0x00 00 1C 2D 53 4C FF FF   for Discovery packets
0x00 00 1C 2D 53 4C 80 02    for Meter packets

From VitaFlex.cs in FlexLib I can also see the other classes - FFT, waterfall, etc.

First Q: does every different type of data have its own stream identifier? If so, why do we need a separate class identifier? Is it legitimate to identify the packet type using the stream identifier?

Second Q: Do the Discovery and meter packets follow some defined VITA49 protocol specification? For example, are the scaling values applied to meter data defined in VITA49 or is it just something that Flex has devised?

Third Q: Flex doesn't populate the time fields in the VITA49 header, but the fields are present as 00s. Is there any plan to use these fields?

Last Q: Is the Count field of header word 1 updated as each packet is sent? If so, is this on a class and/or stream basis or does the next packet sent get the next incremental number regardless of class/stream?

Thanks, as always!
Photo of John G3WGV

John G3WGV

  • 174 Posts
  • 33 Reply Likes
  • Realising how little I really know about all this!

Posted 2 years ago

  • 2
Photo of Eric - KE5DTO

Eric - KE5DTO, Official Rep

  • 661 Posts
  • 203 Reply Likes
Official Response
First Q: does every different type of data have its own stream identifier? If so, why do we need a separate class identifier? Is it legitimate to identify the packet type using the stream identifier?
The VITA 49 spec talks about these parts in detail (more detail than anyone would probably want to know!).  But in general, I think the stream ID is for a particular stream and a class ID is more of a type of stream.  Kind of like classes and objects in OO programming.  The stream ID would be an instance of the object while the class ID would be like a class definition.

Second Q: Do the Discovery and meter packets follow some defined VITA49 protocol specification? For example, are the scaling values applied to meter data defined in VITA49 or is it just something that Flex has devised?
The meter packets are done with extended data packets which are mostly defined in VITA 49 (with payload details left up to the developer).

Discovery is a completely different animal very similar to our communication protocol (not VITA 49).  It is probably worth noting that I have heard that VITA 49 is coming out with a command and control protocol.

Third Q: Flex doesn't populate the time fields in the VITA49 header, but the fields are present as 00s. Is there any plan to use these fields? 
We may use these at some point.


Last Q: Is the Count field of header word 1 updated as each packet is sent? If so, is this on a class and/or stream basis or does the next packet sent get the next incremental number regardless of class/stream?
Yes -- updated each packet, unique per stream (not class).  As mentioned above, think of the Stream IDs as individual stream objects while the Class ID defines the type.  The packet count is one way that you can tell when packets are dropped when this count doesn't match what you expected for a particular stream.