24 #include "cheetah/rcpt_low/BeamFormerPacket.h" 33 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
36 return sizeof(PacketHeader);
39 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
46 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
49 return _packet_data_size+_packet_weights_size+_packet_data_padding_size+_packet_weights_padding_size;
52 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
55 return _packet_data_size;
58 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
61 return _number_of_time_samples;
64 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
67 return _number_of_samples;
71 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
77 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
80 return std::numeric_limits<PacketNumberType>::max();
83 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
88 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
93 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
96 return _number_of_channels;
99 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
103 _header.packet_sequence_number = packet_count;
106 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
109 return _header.packet_sequence_number;
112 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
115 _header.packet_destination =
static_cast<decltype(_header.packet_destination)
>(type);
118 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
121 return _header.packet_destination;
124 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
127 assert(sample_number < number_of_samples());
128 _data[sample_number] = std::move(s);
131 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
134 return _data[sample_number];
137 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
143 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
146 return &_data[_packet_data_size/
sizeof(
Sample)];
149 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
155 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
158 return &_weights[_packet_weights_size/
sizeof(WeightsType)];
161 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
164 for(
unsigned i=0; i<ChannelsPerPacket; ++i) _weights[i]=1;;
168 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
171 return _header.first_channel_number;
174 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
178 _header.first_channel_number = number;
181 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
184 _header.first_channel_frequency =
static_cast<decltype(PacketHeader::first_channel_frequency)
>(value.value()*1000);
187 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
190 double frequency_value = ((double)_header.first_channel_frequency)/1000.0;
192 return (frequency_value * boost::units::si::mega * boost::units::si::hertz);
196 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
199 return _header.scan_id;
202 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
205 _header.scan_id = number;
211 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
214 return _header.beam_number;
217 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
221 _header.beam_number = number;
225 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
229 return _header.magic_word;
232 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
236 _header.magic_word = number;
239 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
243 return _header.timestamp_attoseconds;
246 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
250 _header.timestamp_attoseconds = number;
253 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
257 return _header.timestamp_seconds;
260 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
264 _header.timestamp_seconds = number;
267 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
271 return _header.channel_separation;
274 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
278 _header.channel_separation = number;
281 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
285 return _header.data_precision;
288 template<
typename PacketDataType,
unsigned TimeSamplesPerPacket,
unsigned ChannelsPerPacket>
292 _header.data_precision = number;
The incoming RF signal sample from the UDP stream.
Some limits and constants for FLDO.