diff --git a/html/controller/index.html b/html/controller/index.html index 9496b24..24818c9 100644 --- a/html/controller/index.html +++ b/html/controller/index.html @@ -45,6 +45,7 @@
  • API
  • Map data
  • Detection data
  • +
  • Tracker data
  • Timing data
  • IQ metadata
  • Latest timestamp
  • diff --git a/src/data/Track.cpp b/src/data/Track.cpp index b1b3627..a2dde54 100644 --- a/src/data/Track.cpp +++ b/src/data/Track.cpp @@ -53,25 +53,12 @@ void Track::set_nInactive(uint64_t index, uint64_t n) nInactive.at(index) = n; } -uint64_t Track::get_nActive() +uint64_t Track::get_nState(std::string _state) { uint64_t n = 0; for (size_t i = 0; i < id.size(); i++) { - if (get_state(i) == STATE_ACTIVE) - { - n++; - } - } - return n; -} - -uint64_t Track::get_nTentative() -{ - uint64_t n = 0; - for (size_t i = 0; i < id.size(); i++) - { - if (get_state(i) == STATE_TENTATIVE) + if (get_state(i) == _state) { n++; } @@ -160,23 +147,52 @@ std::string Track::to_json(uint64_t timestamp) document.SetObject(); rapidjson::Document::AllocatorType &allocator = document.GetAllocator(); - // store array for non-tentative tracks - rapidjson::Value arrayId(rapidjson::kArrayType); - rapidjson::Value value; + // store track data + rapidjson::Value dataArray(rapidjson::kArrayType); for (int i = 0; i < get_n(); i++) { if (get_state(i) != STATE_TENTATIVE) { - value = rapidjson::StringRef(id.at(i).c_str()); - arrayId.PushBack(value, allocator); + rapidjson::Value object1(rapidjson::kObjectType); + object1.AddMember("id", rapidjson::Value(id.at(i).c_str(), + document.GetAllocator()).Move(), document.GetAllocator()); + object1.AddMember("state", rapidjson::Value( + state.at(i).at(state.at(i).size()-1).c_str(), + document.GetAllocator()).Move(), document.GetAllocator()); + object1.AddMember("delay", + current.at(i).get_delay().at(0), + document.GetAllocator()); + object1.AddMember("doppler", + current.at(i).get_doppler().at(0), + document.GetAllocator()); + object1.AddMember("acceleration", + acceleration.at(i), document.GetAllocator()); + object1.AddMember("n", associated.at(i).size(), + document.GetAllocator()); + rapidjson::Value associatedDelay(rapidjson::kArrayType); + rapidjson::Value associatedDoppler(rapidjson::kArrayType); + for (size_t j = 0; j < associated.at(i).size(); j++) + { + associatedDelay.PushBack(associated.at(i).at(j).get_delay().at(0), + document.GetAllocator()); + associatedDoppler.PushBack(associated.at(i).at(j).get_doppler().at(0), + document.GetAllocator()); + } + object1.AddMember("associated_delay", + associatedDelay, document.GetAllocator()); + object1.AddMember("associated_doppler", + associatedDoppler, document.GetAllocator()); + dataArray.PushBack(object1, document.GetAllocator()); } } document.AddMember("timestamp", timestamp, allocator); document.AddMember("n", get_n(), allocator); - document.AddMember("nActive", get_nActive(), allocator); - document.AddMember("nTentative", get_nTentative(), allocator); - document.AddMember("id", arrayId, allocator); + document.AddMember("nTentative", get_nState(STATE_TENTATIVE), allocator); + document.AddMember("nAssociated", get_nState(STATE_ASSOCIATED), allocator); + document.AddMember("nActive", get_nState(STATE_ACTIVE), allocator); + document.AddMember("nCoasting", get_nState(STATE_COASTING), allocator); + document.AddMember("data", dataArray, document.GetAllocator()); rapidjson::StringBuffer strbuf; rapidjson::Writer writer(strbuf); diff --git a/src/data/Track.h b/src/data/Track.h index 3a5a884..ae7bada 100644 --- a/src/data/Track.h +++ b/src/data/Track.h @@ -97,13 +97,10 @@ public: /// @return Void. void set_nInactive(uint64_t index, uint64_t n); - /// @brief Get number of active tracks. - /// @return Number of active tracks. - uint64_t get_nActive(); - - /// @brief Get number of tentative tracks. - /// @return Number of tentative tracks. - uint64_t get_nTentative(); + /// @brief Get number of tracks with specified state. + /// @param state State to check. + /// @return Number of tracks with specified state. + uint64_t get_nState(std::string state); /// @brief Get number of total tracks. /// @return Number of total tracks.