libcyberradio 22.01.24
PacketTypes.h
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-2021 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
27namespace LibCyberRadio
28{
33 namespace NDR651
34 {
35
39 struct Vita49Header {
40 uint32_t frameStart;
41 uint32_t frameSize:20;
42 uint32_t frameCount:12;
43 uint16_t packetSize;
44 uint16_t packetCount:4;
45 uint16_t TSF:2;
46 uint16_t TSI:2;
47 uint16_t RSVD:2;
48 uint16_t T:1;
49 uint16_t C:1;
50 uint16_t packetType:4;
51 uint32_t streamId;
57 uint32_t classId1;
64 uint32_t classId2;
65 uint32_t timeSeconds;
66 uint32_t timeFracSecMSB;
67 uint32_t timeFracSecLSB;
68 } __attribute__((packed));
69
73 struct Payload {
74 int16_t samples[2*SAMPLES_PER_FRAME];
75 } __attribute__((packed));
76
81 uint32_t frameEnd;
82 } __attribute__((packed));
83
87 struct TxFrame {
88 struct ethhdr eth;
89 struct iphdr ip;
90 struct udphdr udp;
94 } __attribute__((aligned));
95
100 uint32_t contextIndicator:31;
101 uint32_t CI:1;
102
103 uint32_t spaceAvailable;
104
105 uint32_t overrunCount:7;
106 uint32_t overrunFlag:1;
107 uint32_t underrunCount:7;
108 uint32_t underrunFlag:1;
109 uint32_t packetLossCount:7;
110 uint32_t packetLossFlag:1;
111 uint32_t fullFlag:1;
112 uint32_t emptyFlag:1;
113 uint32_t RSVD:6;
114
115 uint32_t PF:1;
116 uint32_t PE:1;
117 uint32_t PP:1;
118 uint32_t PAD:29;
119 } __attribute__((packed));;
120
129
130 }
131
132}
133
134#endif /* INCLUDED_LIBCYBERRADIO_NDR651_PACKETTYPES_H_ */
Provides programming elements for controlling the CyberRadio Solutions NDR651 radio.
Defines functionality for LibCyberRadio applications.
Definition App.h:24
VITA 49 frame payload information.
Definition PacketTypes.h:73
int16_t samples[2 *SAMPLES_PER_FRAME]
Interleaved I and Q samples.
Definition PacketTypes.h:74
VITA 49 transmit-over-UDP frame information.
Definition PacketTypes.h:87
struct Vita49Trailer vend
VITA 49 frame trailer.
Definition PacketTypes.h:93
struct udphdr udp
UDP header.
Definition PacketTypes.h:90
struct Vita49Header v49
VITA 49 frame header.
Definition PacketTypes.h:91
struct ethhdr eth
Ethernet header.
Definition PacketTypes.h:88
struct iphdr ip
IP header.
Definition PacketTypes.h:89
struct Payload payload
VITA 49 payload.
Definition PacketTypes.h:92
Transmit status frame information.
struct Vita49Trailer vend
VITA 49 frame trailer.
struct Vita49Header v49
VITA 49 frame header.
struct TxStatusPayload status
Transmit status information.
Transmit status information.
Definition PacketTypes.h:99
uint32_t contextIndicator
Context indicator.
uint32_t spaceAvailable
Space available.
uint32_t packetLossCount
Packet loss count.
uint32_t underrunCount
Underrun count.
uint32_t underrunFlag
Underrun flag.
uint32_t PP
Periodic notification.
uint32_t overrunCount
Overrun count.
uint32_t packetLossFlag
Packet loss flag.
VITA 49 frame header information.
Definition PacketTypes.h:39
uint32_t timeSeconds
Timestamp integer field.
Definition PacketTypes.h:65
uint32_t frameStart
Frame start word (ASCII string "VRLP")
Definition PacketTypes.h:40
uint16_t T
Frame trailer present indicator.
Definition PacketTypes.h:48
uint32_t timeFracSecLSB
Timestamp fractional field, LSW.
Definition PacketTypes.h:67
uint16_t TSF
Timestamp fractional field format.
Definition PacketTypes.h:45
uint32_t timeFracSecMSB
Timestamp fractional field, MSW.
Definition PacketTypes.h:66
uint32_t classId1
Class ID Field Part 1.
Definition PacketTypes.h:57
uint16_t C
Class ID field present indicator.
Definition PacketTypes.h:49
uint32_t frameSize
Frame size, in 32-bit words.
Definition PacketTypes.h:41
uint16_t packetCount
Packet counter.
Definition PacketTypes.h:44
uint32_t frameCount
Frame Count.
Definition PacketTypes.h:42
uint16_t packetSize
Packet size, in 32-bit words.
Definition PacketTypes.h:43
uint16_t TSI
Timestamp integer field format.
Definition PacketTypes.h:46
uint16_t packetType
Packet type.
Definition PacketTypes.h:50
uint32_t classId2
Class ID Field Part 2.
Definition PacketTypes.h:64
VITA 49 frame trailer information.
Definition PacketTypes.h:80
uint32_t frameEnd
Frame end word (ASCII string "VEND")
Definition PacketTypes.h:81