FERS 0.1.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
timing Namespace Reference

Classes

class  PrototypeTiming
 Manages timing properties such as frequency, offsets, and synchronization. More...
 
class  Timing
 Represents a timing source for simulation. More...
 

Functions

void to_json (nlohmann::json &j, const PrototypeTiming &pt)
 
void from_json (const nlohmann::json &j, PrototypeTiming &pt)
 

Function Documentation

◆ from_json()

void timing::from_json ( const nlohmann::json &  j,
PrototypeTiming pt 
)

Definition at line 560 of file json_serializer.cpp.

561 {
562 pt.setFrequency(j.at("frequency").get<RealType>());
563 if (j.value("synconpulse", false))
564 {
565 pt.setSyncOnPulse();
566 }
567 else
568 {
569 pt.clearSyncOnPulse();
570 }
571
572 if (j.contains("freq_offset"))
573 {
574 pt.setFreqOffset(j.at("freq_offset").get<RealType>());
575 }
576 else
577 pt.clearFreqOffset();
578 if (j.contains("random_freq_offset_stdev"))
579 {
580 pt.setRandomFreqOffsetStdev(j.at("random_freq_offset_stdev").get<RealType>());
581 }
582 else
583 pt.clearRandomFreqOffsetStdev();
584 if (j.contains("phase_offset"))
585 {
586 pt.setPhaseOffset(j.at("phase_offset").get<RealType>());
587 }
588 else
589 pt.clearPhaseOffset();
590 if (j.contains("random_phase_offset_stdev"))
591 {
592 pt.setRandomPhaseOffsetStdev(j.at("random_phase_offset_stdev").get<RealType>());
593 }
594 else
595 pt.clearRandomPhaseOffsetStdev();
596
597 pt.clearNoiseEntries();
598 if (j.contains("noise_entries"))
599 {
600 for (const auto& entry : j.at("noise_entries"))
601 {
602 pt.setAlpha(entry.at("alpha").get<RealType>(), entry.at("weight").get<RealType>());
603 }
604 }
605 }
double RealType
Type for real numbers.
Definition config.h:27
math::Vec3 max

References max.

◆ to_json()

void timing::to_json ( nlohmann::json &  j,
const PrototypeTiming pt 
)

Definition at line 522 of file json_serializer.cpp.

523 {
524 j = nlohmann::json{{"id", sim_id_to_json(pt.getId())},
525 {"name", pt.getName()},
526 {"frequency", pt.getFrequency()},
527 {"synconpulse", pt.getSyncOnPulse()}};
528
529 if (pt.getFreqOffset().has_value())
530 {
531 j["freq_offset"] = pt.getFreqOffset().value();
532 }
533 if (pt.getRandomFreqOffsetStdev().has_value())
534 {
535 j["random_freq_offset_stdev"] = pt.getRandomFreqOffsetStdev().value();
536 }
537 if (pt.getPhaseOffset().has_value())
538 {
539 j["phase_offset"] = pt.getPhaseOffset().value();
540 }
541 if (pt.getRandomPhaseOffsetStdev().has_value())
542 {
543 j["random_phase_offset_stdev"] = pt.getRandomPhaseOffsetStdev().value();
544 }
545
546 std::vector<RealType> alphas;
547 std::vector<RealType> weights;
548 pt.copyAlphas(alphas, weights);
549 if (!alphas.empty())
550 {
551 nlohmann::json noise_entries = nlohmann::json::array();
552 for (size_t i = 0; i < alphas.size(); ++i)
553 {
554 noise_entries.push_back({{"alpha", alphas[i]}, {"weight", weights[i]}});
555 }
556 j["noise_entries"] = noise_entries;
557 }
558 }

References max.