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 551 of file json_serializer.cpp.

552 {
553 pt.setFrequency(j.at("frequency").get<RealType>());
554 if (j.value("synconpulse", false))
555 {
556 pt.setSyncOnPulse();
557 }
558 else
559 {
560 pt.clearSyncOnPulse();
561 }
562
563 if (j.contains("freq_offset"))
564 {
565 pt.setFreqOffset(j.at("freq_offset").get<RealType>());
566 }
567 else
568 pt.clearFreqOffset();
569 if (j.contains("random_freq_offset_stdev"))
570 {
571 pt.setRandomFreqOffsetStdev(j.at("random_freq_offset_stdev").get<RealType>());
572 }
573 else
574 pt.clearRandomFreqOffsetStdev();
575 if (j.contains("phase_offset"))
576 {
577 pt.setPhaseOffset(j.at("phase_offset").get<RealType>());
578 }
579 else
580 pt.clearPhaseOffset();
581 if (j.contains("random_phase_offset_stdev"))
582 {
583 pt.setRandomPhaseOffsetStdev(j.at("random_phase_offset_stdev").get<RealType>());
584 }
585 else
586 pt.clearRandomPhaseOffsetStdev();
587
588 pt.clearNoiseEntries();
589 if (j.contains("noise_entries"))
590 {
591 for (const auto& entry : j.at("noise_entries"))
592 {
593 pt.setAlpha(entry.at("alpha").get<RealType>(), entry.at("weight").get<RealType>());
594 }
595 }
596 }
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 513 of file json_serializer.cpp.

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

References max.