JackTrip

PacketHeader.h
Go to the documentation of this file.
1 //*****************************************************************
2 /*
3 JackTrip: A System for High-Quality Audio Network Performance
4 over the Internet
5
6 Copyright (c) 2008 Juan-Pablo Caceres, Chris Chafe.
7 SoundWIRE group at CCRMA, Stanford University.
8
9 Permission is hereby granted, free of charge, to any person
10 obtaining a copy of this software and associated documentation
11 files (the "Software"), to deal in the Software without
12 restriction, including without limitation the rights to use,
13 copy, modify, merge, publish, distribute, sublicense, and/or sell
14 copies of the Software, and to permit persons to whom the
15 Software is furnished to do so, subject to the following
16 conditions:
17
18 The above copyright notice and this permission notice shall be
19 included in all copies or substantial portions of the Software.
20
21 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28 OTHER DEALINGS IN THE SOFTWARE.
29 */
30 //*****************************************************************
31
38 #ifndef __PACKETHEADER_H__
39 #define __PACKETHEADER_H__
40
41 #include <iostream>
42 //#include <tr1/memory> // for shared_ptr
43 #include <cstring>
44
45 #include <QObject>
46 #include <QString>
47
48 #include "jacktrip_types.h"
49 #include "jacktrip_globals.h"
50 class JackTrip; // Forward Declaration
51
52
54 struct HeaderStruct{};
55
57 struct DefaultHeaderStruct : public HeaderStruct
58 {
59 public:
60 // watch out for alignment...
61 uint64_t TimeStamp;
62 uint16_t SeqNumber;
63 uint16_t BufferSize;
64 uint8_t SamplingRate;
65 uint8_t BitResolution;
66 //uint8_t NumInChannels; ///< Number of Input Channels
67 //uint8_t NumOutChannels; ///< Number of Output Channels
68 uint8_t NumChannels;
69 uint8_t ConnectionMode;
70 };
71
72 //---------------------------------------------------------
73 //JamLink UDP Header:
74 /************************************************************************/
75 /* values for the UDP stream type */
76 /* streamType is a 16-bit value at the head of each UDP stream */
77 /* Its bit map is as follows: (b15-msb) */
78 /* B15:reserved, B14:extended header, B13 Stereo, B12 not 16-bit */
79 /* B11-B9: 0-48 Khz, 1-44 Khz, 2-32 Khz, 3-24 Khz, */
80 /* 4-22 Khz, 5-16 Khz, 6-11 Khz, 7-8 Khz */
81 /* B8-0: Samples in packet */
82 /************************************************************************/
83 const unsigned short ETX_RSVD = (0<<15);
84 const unsigned short ETX_XTND = (1<<14);
85 const unsigned short ETX_STEREO = (1<<13);
86 const unsigned short ETX_MONO = (0<<13);
87 const unsigned short ETX_16BIT = (0<<12);
88 //inline unsigned short ETX_RATE_MASK(const unsigned short a) { a&(0x7<<9); }
89 const unsigned short ETX_48KHZ = (0<<9);
90 const unsigned short ETX_44KHZ = (1<<9);
91 const unsigned short ETX_32KHZ = (2<<9);
92 const unsigned short ETX_24KHZ = (3<<9);
93 const unsigned short ETX_22KHZ = (4<<9);
94 const unsigned short ETX_16KHZ = (5<<9);
95 const unsigned short ETX_11KHZ = (6<<9);
96 const unsigned short ETX_8KHZ = (7<<9);
97 // able to express up to 512 SPP
98 //inline unsigned short ETX_SPP(const unsigned short a) { (a&0x01FF); }
99
101 struct JamLinkHeaderStuct : public HeaderStruct
102 {
103 // watch out for alignment -- need to be on 4 byte chunks
104 uint16_t Common;
105 uint16_t SeqNumber;
106 uint32_t TimeStamp;
107 };
108
109
110
111 //#######################################################################
112 //####################### PacketHeader ##################################
113 //#######################################################################
117 class PacketHeader : public QObject
118 {
119 Q_OBJECT;
120
121 public:
123 PacketHeader(JackTrip* jacktrip);
125 virtual ~PacketHeader() {}
126
129 static uint64_t usecTime();
132 virtual void fillHeaderCommonFromAudio() = 0;
135 virtual void parseHeader() = 0;
136 virtual void checkPeerSettings(int8_t* full_packet) = 0;
137
138 virtual uint64_t getPeerTimeStamp(int8_t* full_packet) const = 0;
139 virtual uint16_t getPeerSequenceNumber(int8_t* full_packet) const = 0;
140 virtual uint16_t getPeerBufferSize(int8_t* full_packet) const = 0;
141 virtual uint8_t getPeerSamplingRate(int8_t* full_packet) const = 0;
142 virtual uint8_t getPeerBitResolution(int8_t* full_packet) const = 0;
143 virtual uint8_t getPeerNumChannels(int8_t* full_packet) const = 0;
144 virtual uint8_t getPeerConnectionMode(int8_t* full_packet) const = 0;
145
147 virtual void increaseSequenceNumber()
148 { mSeqNumber++; }
151 virtual uint16_t getSequenceNumber() const
152 { return mSeqNumber; }
154 virtual int getHeaderSizeInBytes() const = 0;
155 virtual void putHeaderInPacketBaseClass(int8_t* full_packet,
156 const HeaderStruct& header_struct)
157 {
158 std::memcpy(full_packet, reinterpret_cast<const void*>(&header_struct),
159 getHeaderSizeInBytes() );
160 }
164 virtual void putHeaderInPacket(int8_t* full_packet) = 0;
165
166
167 signals:
168 void signalError(const char* error_message);
169
170
171 private:
172 uint16_t mSeqNumber;
173 JackTrip* mJackTrip;
174 };
175
176
177
178
179 //#######################################################################
180 //####################### DefaultHeader #################################
181 //#######################################################################
184 class DefaultHeader : public PacketHeader
185 {
186 public:
187
188 DefaultHeader(JackTrip* jacktrip);
189 virtual ~DefaultHeader() {}
190
191 virtual void fillHeaderCommonFromAudio();
192 virtual void parseHeader() {}
193 virtual void checkPeerSettings(int8_t* full_packet);
194 virtual void increaseSequenceNumber()
195 { mHeader.SeqNumber++; }
196 virtual uint16_t getSequenceNumber() const
197 { return mHeader.SeqNumber; }
198 virtual int getHeaderSizeInBytes() const { return sizeof(mHeader); }
199 virtual void putHeaderInPacket(int8_t* full_packet)
200 { putHeaderInPacketBaseClass(full_packet, mHeader); }
201 void printHeader() const;
202 uint8_t getConnectionMode() const
203 { return mHeader.ConnectionMode; }
204 uint8_t getNumChannels() const
205 { return mHeader.NumChannels; }
206
207
208 virtual uint64_t getPeerTimeStamp(int8_t* full_packet) const;
209 virtual uint16_t getPeerSequenceNumber(int8_t* full_packet) const;
210 virtual uint16_t getPeerBufferSize(int8_t* full_packet) const;
211 virtual uint8_t getPeerSamplingRate(int8_t* full_packet) const;
212 virtual uint8_t getPeerBitResolution(int8_t* full_packet) const;
213 virtual uint8_t getPeerNumChannels(int8_t* full_packet) const;
214 virtual uint8_t getPeerConnectionMode(int8_t* full_packet) const;
215
216
217 private:
218 DefaultHeaderStruct mHeader;
219 JackTrip* mJackTrip;
220 };
221
222
223
224
225 //#######################################################################
226 //####################### JamLinkHeader #################################
227 //#######################################################################
228
231 class JamLinkHeader : public PacketHeader
232 {
233 public:
234
235 JamLinkHeader(JackTrip* jacktrip);
236 virtual ~JamLinkHeader() {}
237
238 virtual void fillHeaderCommonFromAudio();
239 virtual void parseHeader() {}
240 virtual void checkPeerSettings(int8_t* /*full_packet*/) {}
241
242 virtual uint64_t getPeerTimeStamp(int8_t* /*full_packet*/) const { return 0; }
243 virtual uint16_t getPeerSequenceNumber(int8_t* /*full_packet*/) const { return 0; }
244 virtual uint16_t getPeerBufferSize(int8_t* /*full_packet*/) const { return 0; }
245 virtual uint8_t getPeerSamplingRate(int8_t* /*full_packet*/) const { return 0; }
246 virtual uint8_t getPeerBitResolution(int8_t* /*full_packet*/) const { return 0; }
247 virtual uint8_t getPeerNumChannels(int8_t* /*full_packet*/) const { return 0; }
248 virtual uint8_t getPeerConnectionMode(int8_t* /*full_packet*/) const { return 0; }
249
250 virtual void increaseSequenceNumber() {}
251 virtual int getHeaderSizeInBytes() const { return sizeof(mHeader); }
252 virtual void putHeaderInPacket(int8_t* full_packet)
253 { putHeaderInPacketBaseClass(full_packet, mHeader); }
254
255 private:
256 JamLinkHeaderStuct mHeader;
257 JackTrip* mJackTrip;
258 };
259
260
261
262 //#######################################################################
263 //####################### EmptyHeader #################################
264 //#######################################################################
265
268 class EmptyHeader : public PacketHeader
269 {
270 public:
271
272 EmptyHeader(JackTrip* jacktrip);
273 virtual ~EmptyHeader() {}
274
275 virtual void fillHeaderCommonFromAudio() {}
276 virtual void parseHeader() {}
277 virtual void checkPeerSettings(int8_t* /*full_packet*/) {}
278 virtual void increaseSequenceNumber() {}
279 virtual int getHeaderSizeInBytes() const { return 0; }
280
281 virtual uint64_t getPeerTimeStamp(int8_t* /*full_packet*/) const { return 0; }
282 virtual uint16_t getPeerSequenceNumber(int8_t* /*full_packet*/) const { return 0; }
283 virtual uint16_t getPeerBufferSize(int8_t* /*full_packet*/) const { return 0; }
284 virtual uint8_t getPeerSamplingRate(int8_t* /*full_packet*/) const { return 0; }
285 virtual uint8_t getPeerBitResolution(int8_t* /*full_packet*/) const { return 0; }
286 virtual uint8_t getPeerNumChannels(int8_t* /*full_packet*/) const { return 0; }
287 virtual uint8_t getPeerConnectionMode(int8_t* /*full_packet*/) const { return 0; }
288
289 virtual void putHeaderInPacket(int8_t* /*full_packet*/) {}
290
291 private:
292 JackTrip* mJackTrip;
293 };
294
295
296 #endif //__PACKETHEADER_H__
jacktrip_types.h
EmptyHeader::getPeerBitResolution
virtual uint8_t getPeerBitResolution(int8_t *) const
Definition: PacketHeader.h:285
PacketHeader::checkPeerSettings
virtual void checkPeerSettings(int8_t *full_packet)=0
PacketHeader::PacketHeader
PacketHeader(JackTrip *jacktrip)
The class Constructor.
Definition: PacketHeader.cpp:76
JamLinkHeader
JamLink Header.
Definition: PacketHeader.h:231
DefaultHeaderStruct::SeqNumber
uint16_t SeqNumber
Sequence Number.
Definition: PacketHeader.h:62
JamLinkHeader::putHeaderInPacket
virtual void putHeaderInPacket(int8_t *full_packet)
Put the header in buffer pointed by full_packet.
Definition: PacketHeader.h:252
JamLinkHeader::~JamLinkHeader
virtual ~JamLinkHeader()
Definition: PacketHeader.h:236
EmptyHeader::getHeaderSizeInBytes
virtual int getHeaderSizeInBytes() const
Get the header size in bytes.
Definition: PacketHeader.h:279
ETX_MONO
const unsigned short ETX_MONO
Definition: PacketHeader.h:86
ETX_8KHZ
const unsigned short ETX_8KHZ
Definition: PacketHeader.h:96
PacketHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *full_packet) const =0
PacketHeader::getPeerBitResolution
virtual uint8_t getPeerBitResolution(int8_t *full_packet) const =0
JamLinkHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *) const
Definition: PacketHeader.h:247
PacketHeader::signalError
void signalError(const char *error_message)
Definition: moc_PacketHeader.cpp:126
DefaultHeader::increaseSequenceNumber
virtual void increaseSequenceNumber()
Increase sequence number for counter, a 16bit number.
Definition: PacketHeader.h:194
JamLinkHeader::getPeerBitResolution
virtual uint8_t getPeerBitResolution(int8_t *) const
Definition: PacketHeader.h:246
JamLinkHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *) const
Definition: PacketHeader.h:243
JamLinkHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *) const
Definition: PacketHeader.h:242
PacketHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *full_packet) const =0
DefaultHeader::getPeerBitResolution
virtual uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: PacketHeader.cpp:241
EmptyHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *) const
Definition: PacketHeader.h:282
DefaultHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: PacketHeader.cpp:232
PacketHeader::~PacketHeader
virtual ~PacketHeader()
The class Destructor.
Definition: PacketHeader.h:125
PacketHeader::putHeaderInPacket
virtual void putHeaderInPacket(int8_t *full_packet)=0
Put the header in buffer pointed by full_packet.
DefaultHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: PacketHeader.cpp:205
uint32_t
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
PacketHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *full_packet) const =0
DefaultHeaderStruct::BufferSize
uint16_t BufferSize
Buffer Size in Samples.
Definition: PacketHeader.h:63
EmptyHeader::EmptyHeader
EmptyHeader(JackTrip *jacktrip)
Definition: PacketHeader.cpp:348
DefaultHeader::getSequenceNumber
virtual uint16_t getSequenceNumber() const
Returns the current sequence number.
Definition: PacketHeader.h:196
DefaultHeader::getPeerConnectionMode
virtual uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: PacketHeader.cpp:259
DefaultHeader::getNumChannels
uint8_t getNumChannels() const
Definition: PacketHeader.h:204
EmptyHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *) const
Definition: PacketHeader.h:284
JamLinkHeader::getHeaderSizeInBytes
virtual int getHeaderSizeInBytes() const
Get the header size in bytes.
Definition: PacketHeader.h:251
DefaultHeader::printHeader
void printHeader() const
Definition: PacketHeader.cpp:182
EmptyHeader::increaseSequenceNumber
virtual void increaseSequenceNumber()
Increase sequence number for counter, a 16bit number.
Definition: PacketHeader.h:278
EmptyHeader::getPeerConnectionMode
virtual uint8_t getPeerConnectionMode(int8_t *) const
Definition: PacketHeader.h:287
EmptyHeader::fillHeaderCommonFromAudio
virtual void fillHeaderCommonFromAudio()
Definition: PacketHeader.h:275
PacketHeader::fillHeaderCommonFromAudio
virtual void fillHeaderCommonFromAudio()=0
DefaultHeader::getHeaderSizeInBytes
virtual int getHeaderSizeInBytes() const
Get the header size in bytes.
Definition: PacketHeader.h:198
DefaultHeader::parseHeader
virtual void parseHeader()
Parse the packet header and take appropriate measures (like change settings, or quit the program if p...
Definition: PacketHeader.h:192
DefaultHeader::checkPeerSettings
virtual void checkPeerSettings(int8_t *full_packet)
Definition: PacketHeader.cpp:126
JamLinkHeader::checkPeerSettings
virtual void checkPeerSettings(int8_t *)
Definition: PacketHeader.h:240
JamLinkHeaderStuct::SeqNumber
uint16_t SeqNumber
Sequence Number.
Definition: PacketHeader.h:105
DefaultHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *full_packet) const
Definition: PacketHeader.cpp:214
JamLinkHeader::fillHeaderCommonFromAudio
virtual void fillHeaderCommonFromAudio()
Definition: PacketHeader.cpp:285
PacketHeader
Base class for header type. Subclass this struct to create a new header.
Definition: PacketHeader.h:117
EmptyHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *) const
Definition: PacketHeader.h:281
JamLinkHeader::getPeerConnectionMode
virtual uint8_t getPeerConnectionMode(int8_t *) const
Definition: PacketHeader.h:248
DefaultHeader::DefaultHeader
DefaultHeader(JackTrip *jacktrip)
Definition: PacketHeader.cpp:97
PacketHeader::getHeaderSizeInBytes
virtual int getHeaderSizeInBytes() const =0
Get the header size in bytes.
DefaultHeaderStruct
Default Header Struct.
Definition: PacketHeader.h:57
DefaultHeaderStruct::ConnectionMode
uint8_t ConnectionMode
Definition: PacketHeader.h:69
DefaultHeader::~DefaultHeader
virtual ~DefaultHeader()
Definition: PacketHeader.h:189
PacketHeader::putHeaderInPacketBaseClass
virtual void putHeaderInPacketBaseClass(int8_t *full_packet, const HeaderStruct &header_struct)
Definition: PacketHeader.h:155
PacketHeader::usecTime
static uint64_t usecTime()
Return a time stamp in microseconds.
Definition: PacketHeader.cpp:82
ETX_11KHZ
const unsigned short ETX_11KHZ
Definition: PacketHeader.h:95
EmptyHeader::putHeaderInPacket
virtual void putHeaderInPacket(int8_t *)
Put the header in buffer pointed by full_packet.
Definition: PacketHeader.h:289
int8_t
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:78
ETX_22KHZ
const unsigned short ETX_22KHZ
Definition: PacketHeader.h:93
DefaultHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: PacketHeader.cpp:250
EmptyHeader::getPeerBufferSize
virtual uint16_t getPeerBufferSize(int8_t *) const
Definition: PacketHeader.h:283
PacketHeader::getPeerBufferSize
virtual uint16_t getPeerBufferSize(int8_t *full_packet) const =0
ETX_16BIT
const unsigned short ETX_16BIT
Definition: PacketHeader.h:87
EmptyHeader
Empty Header to use with systems that don&#39;t include a header.
Definition: PacketHeader.h:268
ETX_RSVD
const unsigned short ETX_RSVD
Definition: PacketHeader.h:83
ETX_48KHZ
const unsigned short ETX_48KHZ
Definition: PacketHeader.h:89
jacktrip_globals.h
EmptyHeader::checkPeerSettings
virtual void checkPeerSettings(int8_t *)
Definition: PacketHeader.h:277
JamLinkHeaderStuct
JamLink Header Struct.
Definition: PacketHeader.h:101
ETX_44KHZ
const unsigned short ETX_44KHZ
Definition: PacketHeader.h:90
DefaultHeader::fillHeaderCommonFromAudio
virtual void fillHeaderCommonFromAudio()
Definition: PacketHeader.cpp:113
EmptyHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *) const
Definition: PacketHeader.h:286
PacketHeader::getSequenceNumber
virtual uint16_t getSequenceNumber() const
Returns the current sequence number.
Definition: PacketHeader.h:151
DefaultHeader::getConnectionMode
uint8_t getConnectionMode() const
Definition: PacketHeader.h:202
DefaultHeaderStruct::BitResolution
uint8_t BitResolution
Audio Bit Resolution.
Definition: PacketHeader.h:65
PacketHeader::parseHeader
virtual void parseHeader()=0
Parse the packet header and take appropriate measures (like change settings, or quit the program if p...
DefaultHeader
Default Header.
Definition: PacketHeader.h:184
JamLinkHeader::increaseSequenceNumber
virtual void increaseSequenceNumber()
Increase sequence number for counter, a 16bit number.
Definition: PacketHeader.h:250
PacketHeader::getPeerConnectionMode
virtual uint8_t getPeerConnectionMode(int8_t *full_packet) const =0
HeaderStruct
Abstract Header Struct, Header Stucts should subclass it.
Definition: PacketHeader.h:54
ETX_STEREO
const unsigned short ETX_STEREO
Definition: PacketHeader.h:85
JamLinkHeaderStuct::TimeStamp
uint32_t TimeStamp
Time Stamp.
Definition: PacketHeader.h:106
JackTrip
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:67
JamLinkHeader::getPeerBufferSize
virtual uint16_t getPeerBufferSize(int8_t *) const
Definition: PacketHeader.h:244
DefaultHeaderStruct::SamplingRate
uint8_t SamplingRate
Sampling Rate in JackAudioInterface::samplingRateT.
Definition: PacketHeader.h:64
DefaultHeader::putHeaderInPacket
virtual void putHeaderInPacket(int8_t *full_packet)
Put the header in buffer pointed by full_packet.
Definition: PacketHeader.h:199
JamLinkHeaderStuct::Common
uint16_t Common
Common part of the header, 16 bit.
Definition: PacketHeader.h:104
ETX_16KHZ
const unsigned short ETX_16KHZ
Definition: PacketHeader.h:94
EmptyHeader::~EmptyHeader
virtual ~EmptyHeader()
Definition: PacketHeader.h:273
DefaultHeader::getPeerBufferSize
virtual uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: PacketHeader.cpp:223
ETX_XTND
const unsigned short ETX_XTND
Definition: PacketHeader.h:84
PacketHeader::increaseSequenceNumber
virtual void increaseSequenceNumber()
Increase sequence number for counter, a 16bit number.
Definition: PacketHeader.h:147
JamLinkHeader::JamLinkHeader
JamLinkHeader(JackTrip *jacktrip)
Definition: PacketHeader.cpp:275
JamLinkHeader::parseHeader
virtual void parseHeader()
Parse the packet header and take appropriate measures (like change settings, or quit the program if p...
Definition: PacketHeader.h:239
EmptyHeader::parseHeader
virtual void parseHeader()
Parse the packet header and take appropriate measures (like change settings, or quit the program if p...
Definition: PacketHeader.h:276
uint16_t
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71
DefaultHeaderStruct::NumChannels
uint8_t NumChannels
Number of Channels, we assume input and outputs are the same.
Definition: PacketHeader.h:68
ETX_32KHZ
const unsigned short ETX_32KHZ
Definition: PacketHeader.h:91
PacketHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *full_packet) const =0
JamLinkHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *) const
Definition: PacketHeader.h:245
DefaultHeaderStruct::TimeStamp
uint64_t TimeStamp
Time Stamp.
Definition: PacketHeader.h:61
uint8_t
quint8 uint8_t
Typedef for unsigned char. This type is guaranteed to be 8-bit.
Definition: jacktrip_types.h:69
ETX_24KHZ
const unsigned short ETX_24KHZ
Definition: PacketHeader.h:92