MessageGroup.cpp
Go to the documentation of this file.
2 
3 #include <chrono>
4 #include <memory>
5 
8 
9 namespace dai {
10 
11 std::shared_ptr<RawBuffer> MessageGroup::serialize() const {
12  return raw;
13 }
14 
15 MessageGroup::MessageGroup() : Buffer(std::make_shared<RawMessageGroup>()), rawGrp(*dynamic_cast<RawMessageGroup*>(raw.get())) {}
16 MessageGroup::MessageGroup(std::shared_ptr<RawMessageGroup> ptr) : Buffer(std::move(ptr)), rawGrp(*dynamic_cast<RawMessageGroup*>(raw.get())) {}
17 
18 std::shared_ptr<ADatatype> MessageGroup::operator[](const std::string& name) {
19  return group.at(name);
20 }
21 void MessageGroup::add(const std::string& name, const std::shared_ptr<ADatatype>& value) {
22  group[name] = value;
23  rawGrp.group[name] = {value->getRaw(), 0};
24 }
25 
26 std::unordered_map<std::string, std::shared_ptr<ADatatype>>::iterator MessageGroup::begin() {
27  return group.begin();
28 }
29 std::unordered_map<std::string, std::shared_ptr<ADatatype>>::iterator MessageGroup::end() {
30  return group.end();
31 }
32 
33 int64_t MessageGroup::getIntervalNs() const {
34  if(!rawGrp.group.empty()) {
35  auto oldest = std::dynamic_pointer_cast<Buffer>(group.begin()->second)->getTimestampDevice();
36  auto latest = oldest;
37  for(const auto& entry : group) {
38  auto ts = std::dynamic_pointer_cast<Buffer>(entry.second)->getTimestampDevice();
39  if(ts < oldest) oldest = ts;
40  if(ts > latest) latest = ts;
41  }
42  return std::chrono::duration_cast<std::chrono::nanoseconds>(latest - oldest).count();
43  }
44  return {};
45 }
46 
48  return rawGrp.group.size();
49 }
50 
51 std::vector<std::string> MessageGroup::getMessageNames() const {
52  std::vector<std::string> names;
53  names.reserve(group.size());
54  for(const auto& entry : group) {
55  names.push_back(entry.first);
56  }
57  return names;
58 }
59 
60 bool MessageGroup::isSynced(int64_t thresholdNs) const {
61  return getIntervalNs() <= thresholdNs;
62 }
63 
64 // setters
65 MessageGroup& MessageGroup::setTimestamp(std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> tp) {
66  // Set timestamp from timepoint
67  return static_cast<MessageGroup&>(Buffer::setTimestamp(tp));
68 }
69 MessageGroup& MessageGroup::setTimestampDevice(std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> tp) {
70  // Set timestamp from timepoint
71  return static_cast<MessageGroup&>(Buffer::setTimestampDevice(tp));
72 }
74  return static_cast<MessageGroup&>(Buffer::setSequenceNum(sequenceNum));
75 }
76 
77 } // namespace dai
MessageGroup.hpp
dai::MessageGroup
Definition: MessageGroup.hpp:16
DAI_SPAN_NAMESPACE_NAME::get
constexpr auto get(span< E, S > s) -> decltype(s[N])
Definition: span.hpp:491
dai::MessageGroup::serialize
std::shared_ptr< RawBuffer > serialize() const override
Definition: MessageGroup.cpp:11
dai::MessageGroup::getNumMessages
int64_t getNumMessages() const
Definition: MessageGroup.cpp:47
dai::MessageGroup::MessageGroup
MessageGroup()
Construct MessageGroup message.
Definition: MessageGroup.cpp:15
DatatypeEnum.hpp
dai::Buffer::setTimestamp
Buffer & setTimestamp(std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > timestamp)
Definition: Buffer.cpp:39
dai::RawMessageGroup
Definition: RawMessageGroup.hpp:21
dai::Buffer::setTimestampDevice
Buffer & setTimestampDevice(std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > timestamp)
Definition: Buffer.cpp:47
RawBuffer.hpp
dai::MessageGroup::isSynced
bool isSynced(int64_t thresholdNs) const
Definition: MessageGroup.cpp:60
dai::MessageGroup::begin
std::unordered_map< std::string, std::shared_ptr< ADatatype > >::iterator begin()
Definition: MessageGroup.cpp:26
dai::MessageGroup::operator[]
std::shared_ptr< ADatatype > operator[](const std::string &name)
Group.
Definition: MessageGroup.cpp:18
dai::MessageGroup::rawGrp
RawMessageGroup & rawGrp
Definition: MessageGroup.hpp:18
dai::Buffer
Base message - buffer of binary data.
Definition: Buffer.hpp:13
dai::RawMessageGroup::group
std::unordered_map< std::string, RawGroupMessage > group
Definition: RawMessageGroup.hpp:22
dai::MessageGroup::setTimestamp
MessageGroup & setTimestamp(std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > timestamp)
Definition: MessageGroup.cpp:65
dai::MessageGroup::end
std::unordered_map< std::string, std::shared_ptr< ADatatype > >::iterator end()
Definition: MessageGroup.cpp:29
dai::MessageGroup::getMessageNames
std::vector< std::string > getMessageNames() const
Definition: MessageGroup.cpp:51
std
Definition: Node.hpp:366
dai::ADatatype::raw
std::shared_ptr< RawBuffer > raw
Definition: ADatatype.hpp:15
dai::MessageGroup::group
std::unordered_map< std::string, std::shared_ptr< ADatatype > > group
Definition: MessageGroup.hpp:19
dai::MessageGroup::getIntervalNs
int64_t getIntervalNs() const
Definition: MessageGroup.cpp:33
dai
Definition: CameraExposureOffset.hpp:6
dai::MessageGroup::setSequenceNum
MessageGroup & setSequenceNum(int64_t sequenceNum)
Definition: MessageGroup.cpp:73
dai::MessageGroup::setTimestampDevice
MessageGroup & setTimestampDevice(std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > timestamp)
Definition: MessageGroup.cpp:69
dai::Buffer::setSequenceNum
Buffer & setSequenceNum(int64_t sequenceNum)
Definition: Buffer.cpp:55
dai::MessageGroup::add
void add(const std::string &name, const std::shared_ptr< ADatatype > &value)
Definition: MessageGroup.cpp:21


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19