SEBA-958 send periodic port stats
Change-Id: I981e6c70b214845d87e8ae96b370fcdf58ccfef3
diff --git a/internal/bbsim/devices/helpers.go b/internal/bbsim/devices/helpers.go
index c4bab28..e72093b 100644
--- a/internal/bbsim/devices/helpers.go
+++ b/internal/bbsim/devices/helpers.go
@@ -17,6 +17,7 @@
package devices
import (
+ "math/rand"
"strconv"
"time"
@@ -85,3 +86,46 @@
olt.EventChannel <- event
}
}
+
+func getPortStats(packetCount uint64, incrementStat bool) (*openolt.PortStatistics, uint64) {
+ // increment current packet count by random number
+ if incrementStat {
+ packetCount = packetCount + uint64(rand.Intn(50)+1*10)
+ }
+
+ // fill all other stats based on packet count
+ portStats := &openolt.PortStatistics{
+ RxBytes: packetCount * 64,
+ RxPackets: packetCount,
+ RxUcastPackets: packetCount * 40 / 100,
+ RxMcastPackets: packetCount * 30 / 100,
+ RxBcastPackets: packetCount * 30 / 100,
+ RxErrorPackets: 0,
+ TxBytes: packetCount * 64,
+ TxPackets: packetCount,
+ TxUcastPackets: packetCount * 40 / 100,
+ TxMcastPackets: packetCount * 30 / 100,
+ TxBcastPackets: packetCount * 30 / 100,
+ TxErrorPackets: 0,
+ RxCrcErrors: 0,
+ BipErrors: 0,
+ Timestamp: uint32(time.Now().Unix()),
+ }
+
+ return portStats, packetCount
+}
+
+// InterfaceIDToPortNo converts InterfaceID to voltha PortID
+// Refer openolt adapter code(master) voltha-openolt-adapter/adaptercore/olt_platform.go: IntfIDToPortNo()
+func InterfaceIDToPortNo(intfID uint32, intfType string) uint32 {
+ // Converts interface-id to port-numbers that can be understood by the VOLTHA
+ if intfType == "nni" {
+ // nni at voltha starts with 1,048,576
+ // nni = 1,048,576 + InterfaceID
+ return 0x1<<20 + intfID
+ } else if intfType == "pon" {
+ // pon = 536,870,912 + InterfaceID
+ return (0x2 << 28) + intfID
+ }
+ return 0
+}