summaryrefslogtreecommitdiff
path: root/cras/src/common/packet_status_logger.h
diff options
context:
space:
mode:
Diffstat (limited to 'cras/src/common/packet_status_logger.h')
-rw-r--r--cras/src/common/packet_status_logger.h127
1 files changed, 0 insertions, 127 deletions
diff --git a/cras/src/common/packet_status_logger.h b/cras/src/common/packet_status_logger.h
deleted file mode 100644
index 3bc90041..00000000
--- a/cras/src/common/packet_status_logger.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef PACKET_STATUS_LOGGER_
-#define PACKET_STATUS_LOGGER_
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#define PACKET_STATUS_LEN_BYTES 64
-#define WBS_FRAME_NS 7500000
-
-/* Avoid 32, 40, 64 consecutive hex characters so CrOS feedback redact
- * tool doesn't trim our dump. */
-#define PACKET_STATUS_LOG_LINE_WRAP 50
-
-/*
- * Object to log consecutive packets' status.
- * Members:
- * data - Bytes to store packets' status.
- * size - Total number of bits in |data|.
- * wp - Position of the next bit to log packet status.
- * num_wraps - Number of times the ring buffer has wrapped.
- * ts - The timestamp of the last time when the first bit of |data| updated.
- */
-struct packet_status_logger {
- uint8_t data[PACKET_STATUS_LEN_BYTES];
- int size;
- int wp;
- int num_wraps;
- struct timespec ts;
-};
-
-/* Initializes the packet status logger. */
-void packet_status_logger_init(struct packet_status_logger *logger);
-
-/* Updates the next packet status to logger. */
-void packet_status_logger_update(struct packet_status_logger *logger, bool val);
-
-/* Rewinds logger's time stamp to calculate the beginning.
- * If logger's ring buffer hasn't wrapped, simply return logger_ts.
- * Otherwise beginning_ts = logger_ts - WBS_FRAME_NS * (size - wp)
- */
-static inline void
-packet_status_logger_begin_ts(const struct packet_status_logger *logger,
- struct timespec *ts)
-{
- long nsec = WBS_FRAME_NS * (logger->size - logger->wp);
-
- *ts = logger->ts;
- if (logger->num_wraps == 0)
- return;
- while (nsec > 1000000000L) {
- ts->tv_sec--;
- nsec -= 1000000000L;
- }
- ts->tv_nsec -= nsec;
- if (ts->tv_nsec < 0) {
- ts->tv_sec--;
- ts->tv_nsec += 1000000000L;
- }
-}
-
-/* Fast-forwards the logger's time stamp to calculate the end.
- * In other words, end_ts = logger_ts + WBS_FRAME_NS * wp
- */
-static inline void
-packet_status_logger_end_ts(const struct packet_status_logger *logger,
- struct timespec *ts)
-{
- *ts = logger->ts;
- ts->tv_nsec += WBS_FRAME_NS * logger->wp;
- while (ts->tv_nsec > 1000000000L) {
- ts->tv_sec++;
- ts->tv_nsec -= 1000000000L;
- }
-}
-
-/* Prints the logger data in hex format */
-static inline void
-packet_status_logger_dump_hex(const struct packet_status_logger *logger)
-{
- int i = logger->wp / 8;
-
- /* Print the bits after wp only if buffer has wrapped. */
- if (logger->num_wraps) {
- if (logger->wp % 8)
- printf("%.2x",
- logger->data[i] & (0xff << (logger->wp % 8)));
- for (; i < PACKET_STATUS_LEN_BYTES; i++)
- printf("%.2x", logger->data[i]);
- }
- for (i = 0; i < logger->wp / 8; i++)
- printf("%.2x", logger->data[i]);
- if (logger->wp % 8)
- printf("%.2x", logger->data[i] & (~(0xff << (logger->wp % 8))));
- printf("\n");
-}
-
-/* Prints the logger data in binary format */
-static inline void
-packet_status_logger_dump_binary(const struct packet_status_logger *logger)
-{
- /* Don't print the bits after wp if buffer hasn't wrapped. */
- int head = logger->num_wraps ? logger->wp : 0;
- int len = logger->num_wraps ? logger->size : logger->wp;
- int i, j;
-
- for (i = 0; i < len; ++i) {
- j = (head + i) % logger->size;
- printf("%d", (logger->data[j / 8] >> (j % 8)) & 1U);
- if ((i + 1) % PACKET_STATUS_LOG_LINE_WRAP == 0)
- printf("\n");
- }
- /* Fill indicator digit 'D' until the last line wraps. */
- if (len % PACKET_STATUS_LOG_LINE_WRAP) {
- while (len % PACKET_STATUS_LOG_LINE_WRAP) {
- printf("D");
- ++len;
- }
- printf("\n");
- }
-}
-
-#endif /* PACKET_STATUS_LOGGER_ */