@@ -18,7 +18,7 @@ type PacketGenerator struct {
1818}
1919
2020func New () PacketGenerator {
21- adj , err := adj .NewADJ ("main " , true )
21+ adj , err := adj .NewADJ ("HVSCU-Cabinet " , false )
2222 if err != nil {
2323 log .Fatalf ("Failed to load ADJ: %v\n " , err )
2424 }
@@ -55,30 +55,65 @@ func New() PacketGenerator {
5555}
5656
5757func (pg * PacketGenerator ) CreateRandomPacket () []byte {
58+ if len (pg .packets ) == 0 {
59+
60+ return nil
61+ }
62+
5863 randomIndex := rand .Int63n (int64 (len (pg .packets )))
5964 randomPacket := pg .packets [randomIndex ]
6065
61- buff := bytes . NewBuffer ( make ([] byte , 0 ))
66+ if len ( randomPacket . Measurements ) == 0 {
6267
68+ log .Printf ("The packet with ID %d has no measurements\n " , randomPacket .ID )
69+ return nil
70+ }
71+
72+ buff := bytes .NewBuffer (make ([]byte , 0 ))
6373 binary .Write (buff , binary .LittleEndian , randomPacket .ID )
6474
6575 for _ , measurement := range randomPacket .Measurements {
6676 if strings .Contains (measurement .Type , "enum" ) {
67- binary .Write (buff , binary .LittleEndian , uint8 (rand .Int63n (int64 (len (strings .Split (strings .ReplaceAll (strings .TrimSuffix (strings .TrimPrefix (measurement .Type , "enum(" ), ")" ), " " , "" ), "," ))))))
77+
78+ list := strings .Split (strings .ReplaceAll (strings .TrimSuffix (strings .TrimPrefix (measurement .Type , "enum(" ), ")" ), " " , "" ), "," )
79+ if len (list ) == 0 {
80+
81+ log .Printf ("Empty list for enum: %v\n " , measurement .Type )
82+ continue
83+ }
84+
85+ randomIndex := rand .Int63n (int64 (len (list )))
86+ if randomIndex >= 0 && randomIndex < int64 (len (list )) {
87+ binary .Write (buff , binary .LittleEndian , uint8 (randomIndex ))
88+ } else {
89+
90+ log .Printf ("Index out of range for enum: %v, index: %d, length: %d\n " , measurement .Type , randomIndex , len (list ))
91+ continue
92+ }
6893 } else if measurement .Type == "bool" {
94+
6995 binary .Write (buff , binary .LittleEndian , rand .Int31n (2 ) == 1 )
7096 } else if measurement .Type != "string" {
97+
7198 var number float64
72- if len (measurement .WarningRange ) == 0 {
73- number = mapNumberToRange (rand .Float64 (), measurement .WarningRange , measurement .Type )
74- } else {
75- number = mapNumberToRange (rand .Float64 (), []float64 {measurement .WarningRange [0 ] * 0.8 , measurement .WarningRange [1 ] * 1.2 }, measurement .Type )
99+ if len (measurement .WarningRange ) < 2 {
100+
101+ continue
76102 }
103+
104+ number = mapNumberToRange (
105+ rand .Float64 (),
106+ []float64 {
107+ measurement .WarningRange [0 ] * 0.8 ,
108+ measurement .WarningRange [1 ] * 1.2 ,
109+ },
110+ measurement .Type ,
111+ )
77112 writeNumberAsBytes (number , measurement .Type , buff )
78113 } else {
79- return nil
80- }
81114
115+ continue
116+ }
82117 }
83118
84119 return buff .Bytes ()
0 commit comments