SatCat5
cfgbus_stats.h
1 // Copyright 2021-2025 The Aerospace Corporation.
3 // This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
5 // Network statistics reporting over ConfigBus
6 
7 #pragma once
8 
9 #include <satcat5/cfgbus_core.h>
10 #include <satcat5/cfgbus_timer.h>
11 #include <satcat5/polling.h>
12 
13 namespace satcat5 {
14  namespace cfg {
19  struct TrafficStats {
20  // Explicitly declare default constructor and copy methods.
21  TrafficStats() = default;
22  TrafficStats(const TrafficStats& t) = default;
23  TrafficStats& operator=(const TrafficStats& t) = default;
24 
27  u32 rcvd_bytes;
29  u32 sent_bytes;
31  s32 delta_freq;
32  u16 rate_mbps;
33  u8 errct_mac;
36  u8 errct_pkt;
39  u8 status;
40 
42  u32 errct_total() const;
43  };
44 
49  class NetworkStats {
50  public:
52  NetworkStats(satcat5::cfg::ConfigBus* cfg, unsigned devaddr);
53 
62  void refresh_now();
63 
67 
68  private:
69  satcat5::cfg::Register m_traffic;
70  };
71  }
72 }
ConfigBus core definitions.
Driver for the ConfigBus timer.
Generic ConfigBus API.
Definition: cfgbus_core.h:124
Traffic statistics polling.
Definition: cfgbus_stats.h:49
NetworkStats(satcat5::cfg::ConfigBus *cfg, unsigned devaddr)
Construct a memory-map for the designated ConfigBus device.
Definition: cfgbus_stats.cc:24
satcat5::cfg::TrafficStats get_port(unsigned idx)
Read most recent statistics for the Nth port.
Definition: cfgbus_stats.cc:36
void refresh_now()
Immediately refresh statistics for every port.
Definition: cfgbus_stats.cc:31
Pointer-like wrapper for one or more ConfigBus registers.
Definition: cfgbus_core.h:76
Core event-processing loop for SatCat5 software.
Data structure for reading per-port traffic statistics.
Definition: cfgbus_stats.h:19
s32 delta_freq
Net frequency offset (see above)
Definition: cfgbus_stats.h:31
u8 errct_ovr_rx
Rx-FIFO overflow (rare)
Definition: cfgbus_stats.h:35
u32 bcast_frames
Broadcast frames received from device.
Definition: cfgbus_stats.h:26
u32 sent_frames
Total frames sent from switch to device.
Definition: cfgbus_stats.h:30
u32 bcast_bytes
Broadcast bytes received from device.
Definition: cfgbus_stats.h:25
u8 errct_ptp_tx
TX PTP packets with bad tstamps.
Definition: cfgbus_stats.h:38
u8 errct_mac
MAC/PHY errors.
Definition: cfgbus_stats.h:33
u16 rate_mbps
Link rate in Mbps.
Definition: cfgbus_stats.h:32
u32 errct_total() const
Total errors across all types.
Definition: cfgbus_stats.cc:15
u8 errct_ovr_tx
Tx-FIFO overflow (common)
Definition: cfgbus_stats.h:34
u8 errct_pkt
Packet errors (bad checksum, length, etc.)
Definition: cfgbus_stats.h:36
u32 rcvd_bytes
Total bytes received from device.
Definition: cfgbus_stats.h:27
u32 sent_bytes
Total bytes sent from switch to device.
Definition: cfgbus_stats.h:29
u8 status
Port status (Varies by port)
Definition: cfgbus_stats.h:39
u32 rcvd_frames
Total frames received from device.
Definition: cfgbus_stats.h:28
u8 errct_ptp_rx
RX PTP packets with bad tstamps.
Definition: cfgbus_stats.h:37