From d5dc9a46f0aff3039c679ad98ef1abbea5272efe Mon Sep 17 00:00:00 2001
From: Giovanna Lazzari Miotto <giovanna.lazzari.miotto@cern.ch>
Date: Tue, 23 Apr 2024 18:20:39 +0200
Subject: [PATCH] chore: Change orbit count to signed 32-bit

---
 src/orbit_processor.cc | 10 ++++++----
 src/orbit_processor.h  |  6 ++++--
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/orbit_processor.cc b/src/orbit_processor.cc
index 56622513..e9bbbf94 100644
--- a/src/orbit_processor.cc
+++ b/src/orbit_processor.cc
@@ -104,9 +104,11 @@ OrbitProcessor::FillOrbitMetadata OrbitProcessor::FillOrbit(orbit_trailer *trail
                                                             char *wr_ptr, const char *rd_end_ptr,
                                                             const char *wr_end_ptr,
                                                             bool is_dropped_orbit) {
-  std::pair<uint32_t, bool> orbit_header = std::pair<uint32_t, bool>{ProcessOrbitHeader(rd_ptr)};
-  uint32_t orbit = uint32_t{orbit_header.first};
-  if (orbit <= 0) return {0, 0, 0};
+  std::pair<uint32_t, bool> orbit_header = ProcessOrbitHeader(rd_ptr);
+  auto orbit = static_cast<int>(orbit_header.first);
+  if (orbit <= 0) {
+    return {0, 0, 0};
+  }
   //.second is the warning test enable bit
   rd_ptr += 32;  // +32 to account for orbit header
   if (cmsswHeaders) {
@@ -141,7 +143,7 @@ OrbitProcessor::FillOrbitMetadata OrbitProcessor::FillOrbit(orbit_trailer *trail
     WriteMemRegion writeable_block(&wr_ptr, wr_end_ptr);
     assert(writeable_block.CheckBounds(GetPacketSize()));  // Max size a decoded block can use
 
-    BxMetadata meta{orbit_header.second, bx, orbit};
+    BxMetadata meta{orbit_header.second, static_cast<uint32_t>(bx), orbit};
 
     const int ret_counts = ProcessBlock(readable_block, writeable_block, meta);
     if (ret_counts == -1) {
diff --git a/src/orbit_processor.h b/src/orbit_processor.h
index 8702bda3..e9844265 100644
--- a/src/orbit_processor.h
+++ b/src/orbit_processor.h
@@ -1,6 +1,8 @@
 #ifndef ORBIT_PROCESSOR_H
 #define ORBIT_PROCESSOR_H
 
+#include <cassert>
+
 #include "config.h"
 #include "controls.h"
 #include "format.h"
@@ -42,7 +44,7 @@ class OrbitProcessor : public Processor {
  protected:
   struct FillOrbitMetadata {
     uint32_t counts;
-    uint32_t orbit;
+    int orbit;
     uint32_t filled_bxs;
   };
 
@@ -67,7 +69,7 @@ class OrbitProcessor : public Processor {
   struct BxMetadata {
     uint32_t header;
     uint32_t bx;
-    uint32_t orbit;
+    int orbit;
   };
 
   template <typename T, uint32_t N>
-- 
GitLab