create own last_timestamp_ms for each buffer

Bug: 213305069
Test: manual
Change-Id: I8b33dd3c2848750aa336b148db7d6a0c6df212ba
Merged-In: I8b33dd3c2848750aa336b148db7d6a0c6df212ba
diff --git a/src/adaptation/debug_nfcsnoop.cc b/src/adaptation/debug_nfcsnoop.cc
index 31534f4..da8508e 100644
--- a/src/adaptation/debug_nfcsnoop.cc
+++ b/src/adaptation/debug_nfcsnoop.cc
@@ -59,23 +59,25 @@
 
 static std::mutex buffer_mutex;
 static ringbuffer_t* buffers[BUFFER_SIZE] = {nullptr, nullptr};
-static uint64_t last_timestamp_ms = 0;
+static uint64_t last_timestamp_ms[BUFFER_SIZE] = {0, 0};
 static bool isDebuggable = false;
 
 using android::base::StringPrintf;
 
 static void nfcsnoop_cb(const uint8_t* data, const size_t length,
                         bool is_received, const uint64_t timestamp_us,
-                        ringbuffer_t* buffer) {
+                        size_t buffer_index) {
   nfcsnooz_header_t header;
 
   std::lock_guard<std::mutex> lock(buffer_mutex);
 
   // Make room in the ring buffer
 
-  while (ringbuffer_available(buffer) < (length + sizeof(nfcsnooz_header_t))) {
-    ringbuffer_pop(buffer, (uint8_t*)&header, sizeof(nfcsnooz_header_t));
-    ringbuffer_delete(buffer, header.length);
+  while (ringbuffer_available(buffers[buffer_index]) <
+         (length + sizeof(nfcsnooz_header_t))) {
+    ringbuffer_pop(buffers[buffer_index], (uint8_t*)&header,
+                   sizeof(nfcsnooz_header_t));
+    ringbuffer_delete(buffers[buffer_index], header.length);
   }
 
   // Insert data
@@ -83,15 +85,17 @@
   header.is_received = is_received ? 1 : 0;
 
   uint64_t delta_time_ms = 0;
-  if (last_timestamp_ms) {
-    __builtin_sub_overflow(timestamp_us, last_timestamp_ms, &delta_time_ms);
+  if (last_timestamp_ms[buffer_index]) {
+    __builtin_sub_overflow(timestamp_us, last_timestamp_ms[buffer_index],
+                           &delta_time_ms);
   }
   header.delta_time_ms = delta_time_ms;
 
-  last_timestamp_ms = timestamp_us;
+  last_timestamp_ms[buffer_index] = timestamp_us;
 
-  ringbuffer_insert(buffer, (uint8_t*)&header, sizeof(nfcsnooz_header_t));
-  ringbuffer_insert(buffer, data, length);
+  ringbuffer_insert(buffers[buffer_index], (uint8_t*)&header,
+                    sizeof(nfcsnooz_header_t));
+  ringbuffer_insert(buffers[buffer_index], data, length);
 }
 
 static bool nfcsnoop_compress(ringbuffer_t* rb_dst, ringbuffer_t* rb_src) {
@@ -156,13 +160,13 @@
 
   if (mt == NCI_MT_NTF && gid == NCI_GID_PROP) {
     nfcsnoop_cb(p, p[2] + NCI_MSG_HDR_SIZE, is_received, timestamp,
-                buffers[VENDOR_BUFFER_INDEX]);
+                VENDOR_BUFFER_INDEX);
   } else if (mt == NCI_MT_DATA) {
     nfcsnoop_cb(p, NCI_DATA_HDR_SIZE, is_received, timestamp,
-                buffers[SYSTEM_BUFFER_INDEX]);
+                SYSTEM_BUFFER_INDEX);
   } else if (packet->len > 2) {
     nfcsnoop_cb(p, p[2] + NCI_MSG_HDR_SIZE, is_received, timestamp,
-                buffers[SYSTEM_BUFFER_INDEX]);
+                SYSTEM_BUFFER_INDEX);
   }
 }
 
@@ -197,15 +201,15 @@
     }
   }
 
-  // Prepend preamble
-
-  nfcsnooz_preamble_t preamble;
-  preamble.version = NFCSNOOZ_CURRENT_VERSION;
-  preamble.last_timestamp_ms = last_timestamp_ms;
-
   // Compress data
 
   for (size_t buffer_index = 0; buffer_index < BUFFER_SIZE; ++buffer_index) {
+    // Prepend preamble
+
+    nfcsnooz_preamble_t preamble;
+    preamble.version = NFCSNOOZ_CURRENT_VERSION;
+    preamble.last_timestamp_ms = last_timestamp_ms[buffer_index];
+
     ringbuffer_insert(ringbuffers[buffer_index], (uint8_t*)&preamble,
                       sizeof(nfcsnooz_preamble_t));