FERS
0.1.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
vita49_context_builder.cpp
Go to the documentation of this file.
1
// SPDX-License-Identifier: GPL-2.0-only
2
//
3
// Copyright (c) 2026-present FERS Contributors (see AUTHORS.md).
4
//
5
// See the GNU GPLv2 LICENSE file in the FERS project root for more information.
6
7
#include "
serial/vita49/vita49_context_builder.h
"
8
9
#include <string_view>
10
11
namespace
serial::vita49
12
{
13
namespace
14
{
15
[[
nodiscard
]]
bool
modeAllowsMetadata
(
const
std::string& receiver_mode,
const
std::string_view
metadata_mode
)
16
{
17
return
receiver_mode.empty() || receiver_mode ==
metadata_mode
;
18
}
19
}
20
21
ContextPacket
Vita49ContextBuilder::build
(
const
ContextBuildRequest
&
request
)
22
{
23
std::uint32_t
flags
= 0;
24
if
(
request
.stream.dechirped)
25
{
26
flags
|=
ContextFlagDechirped
;
27
}
28
if
(
request
.stream.if_resampled)
29
{
30
flags
|=
ContextFlagIfResampled
;
31
}
32
if
(
request
.sample_loss)
33
{
34
flags
|=
ContextFlagSampleLoss
;
35
}
36
if
(
request
.stream_open)
37
{
38
flags
|=
ContextFlagStreamOpen
;
39
}
40
if
(
request
.stream_close)
41
{
42
flags
|=
ContextFlagStreamClose
;
43
}
44
if
(
request
.stream.fmcw.present &&
modeAllowsMetadata
(
request
.stream.mode,
"fmcw"
))
45
{
46
flags
|=
ContextFlagFmcwMetadataPresent
;
47
}
48
if
(
request
.stream.cw.present &&
modeAllowsMetadata
(
request
.stream.mode,
"cw"
))
49
{
50
flags
|=
ContextFlagCwMetadataPresent
;
51
}
52
if
(
request
.stream.pulsed.present &&
modeAllowsMetadata
(
request
.stream.mode,
"pulsed"
))
53
{
54
flags
|=
ContextFlagPulsedMetadataPresent
;
55
}
56
57
return
ContextPacket
{
58
.
stream_id
=
request
.stream_id,
59
.class_id =
kFersVrtIqClassId
,
60
.timestamp =
request
.timestamp,
61
.packet_count =
request
.packet_count,
62
.cif0 =
kFersContextCif0
,
63
.state_indicators =
64
makeContextStateIndicators
(
request
.valid_data,
request
.calibrated_time,
request
.reference_lock,
65
request
.over_range,
request
.sample_loss),
66
.payload_format =
makeComplexInt16PayloadFormat
(),
67
.sample_rate =
request
.stream.sample_rate,
68
.reference_frequency =
request
.stream.reference_frequency,
69
.if_offset =
request
.stream.if_offset,
70
.bandwidth =
request
.stream.bandwidth,
71
.adc_fullscale =
request
.adc_fullscale,
72
.receiver_id =
request
.stream.receiver_id,
73
.adc_bits =
request
.stream.adc_bits,
74
.context_flags =
flags
,
75
.receiver_name =
request
.stream.receiver_name,
76
.simulation_name =
request
.simulation_name,
77
.receiver_mode =
request
.stream.mode,
78
.coordinate =
request
.stream.coordinate,
79
.initial_platform_state =
request
.stream.initial_platform_state,
80
.pulsed =
request
.stream.pulsed,
81
.cw =
request
.stream.cw,
82
.fmcw =
request
.stream.fmcw,
83
};
84
}
85
}
serial::vita49::Vita49ContextBuilder::build
static ContextPacket build(const ContextBuildRequest &request)
Definition
vita49_context_builder.cpp:21
serial::vita49
Definition
paced_sender.cpp:19
serial::vita49::kFersContextCif0
constexpr std::uint32_t kFersContextCif0
Definition
vita49_types.h:82
serial::vita49::ContextFlagFmcwMetadataPresent
@ ContextFlagFmcwMetadataPresent
Definition
vita49_types.h:93
serial::vita49::ContextFlagIfResampled
@ ContextFlagIfResampled
Definition
vita49_types.h:89
serial::vita49::ContextFlagDechirped
@ ContextFlagDechirped
Definition
vita49_types.h:88
serial::vita49::ContextFlagStreamOpen
@ ContextFlagStreamOpen
Definition
vita49_types.h:91
serial::vita49::ContextFlagSampleLoss
@ ContextFlagSampleLoss
Definition
vita49_types.h:90
serial::vita49::ContextFlagCwMetadataPresent
@ ContextFlagCwMetadataPresent
Definition
vita49_types.h:94
serial::vita49::ContextFlagPulsedMetadataPresent
@ ContextFlagPulsedMetadataPresent
Definition
vita49_types.h:95
serial::vita49::ContextFlagStreamClose
@ ContextFlagStreamClose
Definition
vita49_types.h:92
serial::vita49::kFersVrtIqClassId
constexpr std::uint64_t kFersVrtIqClassId
Definition
vita49_types.h:29
serial::vita49::makeContextStateIndicators
std::uint32_t makeContextStateIndicators(const bool valid_data, const bool calibrated_time, const bool reference_lock, const bool over_range, const bool sample_loss) noexcept
Definition
vita49_types.cpp:129
serial::vita49::makeComplexInt16PayloadFormat
std::uint64_t makeComplexInt16PayloadFormat() noexcept
Definition
vita49_types.cpp:136
max
math::Vec3 max
Definition
sim_threading.cpp:233
serial::vita49::ContextBuildRequest
Definition
vita49_context_builder.h:16
serial::vita49::ContextPacket
Definition
vita49_types.h:115
serial::vita49::ContextPacket::stream_id
std::uint32_t stream_id
Definition
vita49_types.h:116
vita49_context_builder.h
packages
libfers
src
serial
vita49
vita49_context_builder.cpp
Generated by
1.9.8