mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-09 22:04:43 +00:00
[traffic] Store TraFF message ID with decoded path
Signed-off-by: mvglasow <michael -at- vonglasow.com>
This commit is contained in:
@@ -440,6 +440,7 @@ void TrafficManager::DecodeMessage(openlr::OpenLRDecoder & decoder,
|
||||
{
|
||||
LOG(LINFO, (" Path", i));
|
||||
LOG(LINFO, (" Partner segment ID:", paths[i].m_segmentId));
|
||||
LOG(LINFO, (" Message ID:", paths[i].m_messageId));
|
||||
LOG(LINFO, (" Edges:", paths[i].m_path.size()));
|
||||
for (size_t j = 0; j < paths[i].m_path.size(); j++)
|
||||
{
|
||||
|
||||
@@ -28,6 +28,7 @@ DECLARE_EXCEPTION(DecodedPathSaveError, RootException);
|
||||
struct DecodedPath
|
||||
{
|
||||
PartnerSegmentId m_segmentId;
|
||||
std::string m_messageId;
|
||||
Path m_path;
|
||||
};
|
||||
|
||||
|
||||
@@ -234,6 +234,7 @@ public:
|
||||
m_graph.ResetFakes();
|
||||
|
||||
path.m_segmentId.Set(segment.m_segmentId);
|
||||
path.m_messageId = segment.m_messageId;
|
||||
|
||||
auto const & points = segment.GetLRPs();
|
||||
CHECK_GREATER(points.size(), 1, ("A segment cannot consist of less than two points"));
|
||||
@@ -322,6 +323,7 @@ public:
|
||||
uint32_t constexpr kMaxProjectionCandidates = 5;
|
||||
|
||||
path.m_segmentId.Set(segment.m_segmentId);
|
||||
path.m_messageId = segment.m_messageId;
|
||||
|
||||
auto const & points = segment.GetLRPs();
|
||||
CHECK_GREATER(points.size(), 1, ("A segment cannot consist of less than two points"));
|
||||
|
||||
@@ -151,6 +151,7 @@ struct LinearSegment
|
||||
LinearSegmentSource m_source = LinearSegmentSource::NotValid;
|
||||
// TODO(mgsergio): Think of using openlr::PartnerSegmentId
|
||||
uint32_t m_segmentId = kInvalidSegmentId;
|
||||
std::string m_messageId = "";
|
||||
// TODO(mgsergio): Make sure that one segment cannot contain
|
||||
// more than one location reference.
|
||||
LinearLocationReference m_locationReference;
|
||||
|
||||
@@ -127,8 +127,14 @@ std::vector<openlr::LinearSegment> TraffLocation::ToOpenLrSegments(std::string &
|
||||
for (int dir = 0; dir < dirs; dir++)
|
||||
{
|
||||
openlr::LinearSegment segment;
|
||||
// TODO make this a reference to the TraFF message ID
|
||||
segment.m_segmentId = 42;
|
||||
/*
|
||||
* Segment IDs are used internally by the decoder but nowhere else.
|
||||
* Since we decode TraFF locations one at a time, there are at most two segments in a single
|
||||
* decoder instance (one segment per direction). Therefore, a segment ID derived from the
|
||||
* direction is unique within the decoder instance.
|
||||
*/
|
||||
segment.m_segmentId = dir;
|
||||
segment.m_messageId = messageId;
|
||||
/*
|
||||
* Segments generated from coordinates can have any number of points. Each point, except for
|
||||
* the last point, must indicate the distance to the next point. Line properties (functional
|
||||
|
||||
Reference in New Issue
Block a user