GNU Radio's CYBERRADIO Package
packet_types.h
Go to the documentation of this file.
1 /***************************************************************************
2  * \file PacketTypes.h
3  *
4  * \brief Defines data structures for handling VITA 49-formatted data packets.
5  *
6  * \author NH
7  * \copyright Copyright (c) 2015 CyberRadio Solutions, Inc.
8  *
9  */
10 
11 #ifndef INCLUDED_LIBCYBERRADIO_NDR651_PACKETTYPES_H_
12 #define INCLUDED_LIBCYBERRADIO_NDR651_PACKETTYPES_H_
13 
14 #include <linux/if_ether.h>
15 #include <netinet/ip.h>
16 #include <netinet/udp.h>
17 #include <stdint.h>
18 
19 #define SAMPLES_PER_FRAME 1024
20 
21 #define VRLP 0x56524c50
22 #define VEND 0x56454e44
23 
24 /*!
25  * \brief Provides programming elements for controlling CyberRadio Solutions
26  * products.
27  */
28 namespace gr {
29 /*!
30  * \brief Provides programming elements for controlling the CyberRadio Solutions
31  * NDR651 radio.
32  */
33 namespace CyberRadio {
34 
35 /*!
36  * \brief VITA 49 frame header information.
37  */
38 struct Vita49Header {
39  uint32_t frameStart; //!< Frame start word (ASCII string "VRLP")
40  uint32_t frameSize : 20; //!< Frame size, in 32-bit words
41  uint32_t frameCount : 12; //!< Frame Count
42  uint16_t packetSize; //!< Packet size, in 32-bit words
43  uint16_t packetCount : 4; //!< Packet counter
44  uint16_t TSF : 2; //!< Timestamp fractional field format
45  uint16_t TSI : 2; //!< Timestamp integer field format
46  uint16_t RSVD : 2; //!< RESERVED
47  uint16_t T : 1; //!< Frame trailer present indicator
48  uint16_t C : 1; //!< Class ID field present indicator
49  uint16_t packetType : 4; //!< Packet type
50  uint32_t streamId; //!< Stream ID
51  /*!
52  * \brief Class ID Field Part 1
53  *
54  * Contains the Organizationally Unique Identifier (OUI).
55  */
56  uint32_t classId1;
57  /*!
58  * \brief Class ID Field Part 2
59  *
60  * Bits 16-31 contain the Information Class Code (ICC).
61  * Bits 0-15 contain the Packet Class Code (PCC).
62  */
63  uint32_t classId2;
64  uint32_t timeSeconds; //!< Timestamp integer field
65  uint32_t timeFracSecMSB; //!< Timestamp fractional field, MSW
66  uint32_t timeFracSecLSB; //!< Timestamp fractional field, LSW
67 } __attribute__((packed));
68 
70  uint32_t frameStart; //!< Frame start word (ASCII string "VRLP")
71  uint32_t frameSize : 20; //!< Frame size, in 32-bit words
72  uint32_t frameCount : 12; //!< Frame Count
73  uint16_t packetSize; //!< Packet size, in 32-bit words
74  uint16_t packetCount : 4; //!< Packet counter
75  uint16_t TSF : 2; //!< Timestamp fractional field format
76  uint16_t TSI : 2; //!< Timestamp integer field format
77  uint16_t RSVD : 2; //!< RESERVED
78  uint16_t T : 1; //!< Frame trailer present indicator
79  uint16_t C : 1; //!< Class ID field present indicator
80  uint16_t packetType : 4; //!< Packet type
81  uint32_t streamId; //!< Stream ID
82  uint32_t timeSeconds; //!< Timestamp integer field
83  uint32_t timeFracSecMSB; //!< Timestamp fractional field, MSW
84  uint32_t timeFracSecLSB; //!< Timestamp fractional field, LSW
85 } __attribute__((packed));
86 
87 /*!
88  * \brief VITA 49 frame payload information.
89  */
90 struct IqPayload {
91  int16_t samples[2 * SAMPLES_PER_FRAME]; //!< Interleaved I and Q samples
92 } __attribute__((aligned));
93 
94 /*!
95  * \brief VITA 49 frame trailer information.
96  */
97 struct Vita49Trailer {
98  uint32_t frameEnd; //!< Frame end word (ASCII string "VEND")
99 } __attribute__((packed));
101 /*!
102  * \brief VITA 49 transmit-over-UDP frame information.
103  */
104 struct Ndr308Frame {
105  struct Vita49Header v49; //!< VITA 49 frame header
106  struct IqPayload IQ; //!< VITA 49 payload
107  struct Vita49Trailer vend; //!< VITA 49 frame trailer
108 } __attribute__((aligned));
109 
110 } // namespace CyberRadio
111 
112 } // namespace gr
113 
114 #endif /* INCLUDED_LIBCYBERRADIO_NDR651_PACKETTYPES_H_ */
uint16_t C
Class ID field present indicator.
Definition: packet_types.h:79
uint32_t streamId
Stream ID.
Definition: packet_types.h:81
uint16_t T
Frame trailer present indicator.
Definition: packet_types.h:78
uint32_t timeSeconds
Timestamp integer field.
Definition: packet_types.h:82
uint32_t timeFracSecLSB
Timestamp fractional field, LSW.
Definition: packet_types.h:66
gr::CyberRadio::single_pole_iir_filter_ff_impl __attribute__
uint32_t frameCount
Frame Count.
Definition: packet_types.h:72
VITA 49 frame trailer information.
Definition: packet_types.h:97
uint32_t frameCount
Frame Count.
Definition: packet_types.h:41
uint32_t frameSize
Frame size, in 32-bit words.
Definition: packet_types.h:71
int16_t samples[2 *SAMPLES_PER_FRAME]
Interleaved I and Q samples.
Definition: packet_types.h:91
VITA 49 transmit-over-UDP frame information.
Definition: packet_types.h:104
uint16_t C
Class ID field present indicator.
Definition: packet_types.h:48
struct Vita49Header v49
VITA 49 frame header.
Definition: packet_types.h:105
Definition: packet_types.h:69
uint16_t TSF
Timestamp fractional field format.
Definition: packet_types.h:44
uint32_t streamId
Stream ID.
Definition: packet_types.h:50
struct Vita49Trailer vend
VITA 49 frame trailer.
Definition: packet_types.h:107
VITA 49 frame header information.
Definition: packet_types.h:38
uint16_t TSI
Timestamp integer field format.
Definition: packet_types.h:76
uint16_t TSF
Timestamp fractional field format.
Definition: packet_types.h:75
uint16_t TSI
Timestamp integer field format.
Definition: packet_types.h:45
struct IqPayload IQ
VITA 49 payload.
Definition: packet_types.h:106
VITA 49 frame payload information.
Definition: packet_types.h:90
uint32_t frameSize
Frame size, in 32-bit words.
Definition: packet_types.h:40
uint32_t classId1
Class ID Field Part 1.
Definition: packet_types.h:56
uint16_t packetType
Packet type.
Definition: packet_types.h:80
#define SAMPLES_PER_FRAME
Definition: packet_types.h:19
Provides GNU Radio blocks.
Definition: NDR651_duc_sink_mk2.h:21
uint16_t RSVD
RESERVED.
Definition: packet_types.h:77
uint16_t packetType
Packet type.
Definition: packet_types.h:49
uint32_t timeSeconds
Timestamp integer field.
Definition: packet_types.h:64
uint32_t timeFracSecMSB
Timestamp fractional field, MSW.
Definition: packet_types.h:83
uint32_t classId2
Class ID Field Part 2.
Definition: packet_types.h:63
uint32_t frameStart
Frame start word (ASCII string "VRLP")
Definition: packet_types.h:39
uint16_t packetSize
Packet size, in 32-bit words.
Definition: packet_types.h:73
uint32_t timeFracSecLSB
Timestamp fractional field, LSW.
Definition: packet_types.h:84
uint16_t packetCount
Packet counter.
Definition: packet_types.h:74
uint32_t timeFracSecMSB
Timestamp fractional field, MSW.
Definition: packet_types.h:65
uint16_t packetSize
Packet size, in 32-bit words.
Definition: packet_types.h:42
uint16_t RSVD
RESERVED.
Definition: packet_types.h:46
uint16_t T
Frame trailer present indicator.
Definition: packet_types.h:47
uint16_t packetCount
Packet counter.
Definition: packet_types.h:43
uint32_t frameEnd
Frame end word (ASCII string "VEND")
Definition: packet_types.h:98
uint32_t frameStart
Frame start word (ASCII string "VRLP")
Definition: packet_types.h:70