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 */
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 products.
26 */
27namespace gr
28{
29 /*!
30 * \brief Provides programming elements for controlling the CyberRadio Solutions
31 * NDR651 radio.
32 */
33 namespace CyberRadio
34 {
35
36 /*!
37 * \brief VITA 49 frame header information.
38 */
39 struct Vita49Header {
40 uint32_t frameStart; //!< Frame start word (ASCII string "VRLP")
41 uint32_t frameSize:20; //!< Frame size, in 32-bit words
42 uint32_t frameCount:12; //!< Frame Count
43 uint16_t packetSize; //!< Packet size, in 32-bit words
44 uint16_t packetCount:4; //!< Packet counter
45 uint16_t TSF:2; //!< Timestamp fractional field format
46 uint16_t TSI:2; //!< Timestamp integer field format
47 uint16_t RSVD:2; //!< RESERVED
48 uint16_t T:1; //!< Frame trailer present indicator
49 uint16_t C:1; //!< Class ID field present indicator
50 uint16_t packetType:4; //!< Packet type
51 uint32_t streamId; //!< Stream ID
52 /*!
53 * \brief Class ID Field Part 1
54 *
55 * Contains the Organizationally Unique Identifier (OUI).
56 */
57 uint32_t classId1;
58 /*!
59 * \brief Class ID Field Part 2
60 *
61 * Bits 16-31 contain the Information Class Code (ICC).
62 * Bits 0-15 contain the Packet Class Code (PCC).
63 */
64 uint32_t classId2;
65 uint32_t timeSeconds; //!< Timestamp integer field
66 uint32_t timeFracSecMSB; //!< Timestamp fractional field, MSW
67 uint32_t timeFracSecLSB; //!< Timestamp fractional field, LSW
68 } __attribute__((packed));
69
71 uint32_t frameStart; //!< Frame start word (ASCII string "VRLP")
72 uint32_t frameSize:20; //!< Frame size, in 32-bit words
73 uint32_t frameCount:12; //!< Frame Count
74 uint16_t packetSize; //!< Packet size, in 32-bit words
75 uint16_t packetCount:4; //!< Packet counter
76 uint16_t TSF:2; //!< Timestamp fractional field format
77 uint16_t TSI:2; //!< Timestamp integer field format
78 uint16_t RSVD:2; //!< RESERVED
79 uint16_t T:1; //!< Frame trailer present indicator
80 uint16_t C:1; //!< Class ID field present indicator
81 uint16_t packetType:4; //!< Packet type
82 uint32_t streamId; //!< Stream ID
83 uint32_t timeSeconds; //!< Timestamp integer field
84 uint32_t timeFracSecMSB; //!< Timestamp fractional field, MSW
85 uint32_t timeFracSecLSB; //!< Timestamp fractional field, LSW
86 } __attribute__((packed));
87
88
89 /*!
90 * \brief VITA 49 frame payload information.
91 */
92 struct IqPayload {
93 int16_t samples[2*SAMPLES_PER_FRAME]; //!< Interleaved I and Q samples
94 } __attribute__((aligned));
95
96 /*!
97 * \brief VITA 49 frame trailer information.
98 */
100 uint32_t frameEnd; //!< Frame end word (ASCII string "VEND")
101 } __attribute__((packed));
102
103 /*!
104 * \brief VITA 49 transmit-over-UDP frame information.
105 */
106 struct Ndr308Frame {
107 struct Vita49Header v49; //!< VITA 49 frame header
108 struct IqPayload IQ; //!< VITA 49 payload
109 struct Vita49Trailer vend; //!< VITA 49 frame trailer
110 } __attribute__((aligned));
111
112 }
113
114}
115
116#endif /* INCLUDED_LIBCYBERRADIO_NDR651_PACKETTYPES_H_ */
struct gr::CyberRadio::Vita49Header __attribute__((packed))
Provides programming elements for controlling CyberRadio Solutions products.
Definition single_pole_iir.h:30
#define SAMPLES_PER_FRAME
Definition packet_types.h:19
VITA 49 frame payload information.
Definition packet_types.h:92
int16_t samples[2 *SAMPLES_PER_FRAME]
Interleaved I and Q samples.
Definition packet_types.h:93
VITA 49 transmit-over-UDP frame information.
Definition packet_types.h:106
struct Vita49Trailer vend
VITA 49 frame trailer.
Definition packet_types.h:109
struct IqPayload IQ
VITA 49 payload.
Definition packet_types.h:108
struct Vita49Header v49
VITA 49 frame header.
Definition packet_types.h:107
Definition packet_types.h:70
uint16_t T
Frame trailer present indicator.
Definition packet_types.h:79
uint16_t RSVD
RESERVED.
Definition packet_types.h:78
uint16_t TSI
Timestamp integer field format.
Definition packet_types.h:77
uint32_t frameCount
Frame Count.
Definition packet_types.h:73
uint16_t packetSize
Packet size, in 32-bit words.
Definition packet_types.h:74
uint32_t frameStart
Frame start word (ASCII string "VRLP").
Definition packet_types.h:71
uint16_t TSF
Timestamp fractional field format.
Definition packet_types.h:76
uint32_t timeSeconds
Timestamp integer field.
Definition packet_types.h:83
uint32_t streamId
Stream ID.
Definition packet_types.h:82
uint16_t packetType
Packet type.
Definition packet_types.h:81
uint16_t C
Class ID field present indicator.
Definition packet_types.h:80
uint16_t packetCount
Packet counter.
Definition packet_types.h:75
uint32_t timeFracSecLSB
Timestamp fractional field, LSW.
Definition packet_types.h:85
uint32_t timeFracSecMSB
Timestamp fractional field, MSW.
Definition packet_types.h:84
uint32_t frameSize
Frame size, in 32-bit words.
Definition packet_types.h:72
VITA 49 frame header information.
Definition packet_types.h:39
uint32_t frameCount
Frame Count.
Definition packet_types.h:42
uint16_t T
Frame trailer present indicator.
Definition packet_types.h:48
uint32_t classId1
Class ID Field Part 1.
Definition packet_types.h:57
uint32_t timeFracSecLSB
Timestamp fractional field, LSW.
Definition packet_types.h:67
uint32_t frameSize
Frame size, in 32-bit words.
Definition packet_types.h:41
uint32_t frameStart
Frame start word (ASCII string "VRLP").
Definition packet_types.h:40
uint16_t packetType
Packet type.
Definition packet_types.h:50
uint32_t timeFracSecMSB
Timestamp fractional field, MSW.
Definition packet_types.h:66
uint16_t TSI
Timestamp integer field format.
Definition packet_types.h:46
uint16_t TSF
Timestamp fractional field format.
Definition packet_types.h:45
uint16_t packetSize
Packet size, in 32-bit words.
Definition packet_types.h:43
uint16_t RSVD
RESERVED.
Definition packet_types.h:47
uint16_t C
Class ID field present indicator.
Definition packet_types.h:49
uint32_t streamId
Stream ID.
Definition packet_types.h:51
uint32_t classId2
Class ID Field Part 2.
Definition packet_types.h:64
uint32_t timeSeconds
Timestamp integer field.
Definition packet_types.h:65
uint16_t packetCount
Packet counter.
Definition packet_types.h:44
VITA 49 frame trailer information.
Definition packet_types.h:99
uint32_t frameEnd
Frame end word (ASCII string "VEND").
Definition packet_types.h:100