66 "encoding/binary"
77 "flag"
88 "fmt"
9- "github.com/HyperloopUPV-H8/h9-backend/internal/adj"
9+ "github.com/HyperloopUPV-H8/h9-backend/pkg/excel/utils"
10+
1011 "log"
1112 "net"
1213 "net/http"
@@ -19,11 +20,8 @@ import (
1920 "strings"
2021 "time"
2122
23+ adj_module "github.com/HyperloopUPV-H8/h9-backend/internal/adj"
2224 "github.com/HyperloopUPV-H8/h9-backend/internal/common"
23- "github.com/HyperloopUPV-H8/h9-backend/internal/excel"
24- "github.com/HyperloopUPV-H8/h9-backend/internal/excel/ade"
25- "github.com/HyperloopUPV-H8/h9-backend/internal/excel/utils"
26- "github.com/HyperloopUPV-H8/h9-backend/internal/info"
2725 "github.com/HyperloopUPV-H8/h9-backend/internal/pod_data"
2826 "github.com/HyperloopUPV-H8/h9-backend/internal/update_factory"
2927 vehicle_models "github.com/HyperloopUPV-H8/h9-backend/internal/vehicle/models"
@@ -58,6 +56,18 @@ import (
5856 trace "github.com/rs/zerolog/log"
5957)
6058
59+ const (
60+ BACKEND = "backend"
61+ BLCU = "blcu"
62+ TcpClient = "TCP_CLIENT"
63+ TcpServer = "TCP_SERVER"
64+ UDP = "UDP"
65+ SNTP = "SNTP"
66+ BlcuAck = "blcu_ack"
67+ AddStateOrder = "add_state_order"
68+ RemoveStateOrder = "remove_state_order"
69+ )
70+
6171var traceLevel = flag .String ("trace" , "info" , "set the trace level (\" fatal\" , \" error\" , \" warn\" , \" info\" , \" debug\" , \" trace\" )" )
6272var traceFile = flag .String ("log" , "trace.json" , "set the trace log file" )
6373var cpuprofile = flag .String ("cpuprofile" , "" , "write cpu profile to file" )
@@ -90,7 +100,7 @@ func main() {
90100
91101 // <--- ADJ --->
92102
93- adj , err := adj .NewADJ ()
103+ adj , err := adj_module .NewADJ ()
94104 if err != nil {
95105 trace .Fatal ().Err (err ).Msg ("setting up ADJ" )
96106 }
@@ -116,7 +126,7 @@ func main() {
116126 }
117127 }
118128
119- vehicleOrders , err := vehicle_models .NewVehicleOrders (podData .Boards , config . Excel . Parse . Global . BLCUAddressKey )
129+ vehicleOrders , err := vehicle_models .NewVehicleOrders (podData .Boards , adj . Info . Addresses [ BLCU ] )
120130 if err != nil {
121131 trace .Fatal ().Err (err ).Msg ("creating vehicleOrders" )
122132 }
@@ -160,7 +170,7 @@ func main() {
160170 orderTopic := order_topic .NewSendTopic ()
161171 loggerTopic := logger_topic .NewEnableTopic ()
162172 boardIdToBoard := make (map [abstraction.BoardId ]string )
163- for name , id := range info .BoardIds {
173+ for name , id := range adj . Info .BoardIds {
164174 boardIdToBoard [abstraction .BoardId (id )] = name
165175 }
166176 messageTopic := message_topic .NewUpdateTopic (boardIdToBoard )
@@ -184,8 +194,8 @@ func main() {
184194
185195 // <--- vehicle --->
186196 ipToBoardId := make (map [string ]abstraction.BoardId )
187- for name , ip := range info . Addresses . Boards {
188- ipToBoardId [ip . String () ] = abstraction .BoardId (info .BoardIds [name ])
197+ for name , ip := range adj . Info . Addresses {
198+ ipToBoardId [ip ] = abstraction .BoardId (adj . Info .BoardIds [name ])
189199 }
190200
191201 vehicle := vehicle .New (trace .Logger )
@@ -198,30 +208,30 @@ func main() {
198208
199209 // <--- transport --->
200210 // Load and set packet decoder and encoder
201- decoder , encoder := getTransportDecEnc (info , podData )
211+ decoder , encoder := getTransportDecEnc (adj . Info , podData )
202212 transp .WithDecoder (decoder ).WithEncoder (encoder )
203213
204214 // Set package id to target map
205215 for _ , board := range podData .Boards {
206216 for _ , packet := range board .Packets {
207217 transp .SetIdTarget (abstraction .PacketId (packet .Id ), abstraction .TransportTarget (board .Name ))
208218 }
209- transp .SetTargetIp (info . Addresses . Boards [board .Name ]. String () , abstraction .TransportTarget (board .Name ))
219+ transp .SetTargetIp (adj . Info . Addresses [board .Name ], abstraction .TransportTarget (board .Name ))
210220 }
211221
212222 // Start handling TCP client connections
213223 i := 0
214224 serverTargets := make (map [string ]abstraction.TransportTarget )
215225 for _ , board := range podData .Boards {
216226 if ! common .Contains (config .Vehicle .Boards , board .Name ) {
217- serverTargets [fmt .Sprintf ("%s:%d" , info . Addresses . Boards [board .Name ], info . Ports . TcpClient )] = abstraction .TransportTarget (board .Name )
227+ serverTargets [fmt .Sprintf ("%s:%d" , adj . Info . Addresses [board .Name ], adj . Info . Ports [ TcpClient ] )] = abstraction .TransportTarget (board .Name )
218228 continue
219229 }
220- backendTcpClientAddr , err := net .ResolveTCPAddr ("tcp" , fmt .Sprintf ("%s:%d" , info . Addresses . Backend . String (), info . Ports . TcpClient + uint16 (i )))
230+ backendTcpClientAddr , err := net .ResolveTCPAddr ("tcp" , fmt .Sprintf ("%s:%d" , adj . Info . Addresses [ BACKEND ], adj . Info . Ports [ TcpClient ] + uint16 (i )))
221231 if err != nil {
222232 panic ("Failed to resolve local backend TCP client address" )
223233 }
224- go transp .HandleClient (tcp .NewClientConfig (backendTcpClientAddr ), fmt .Sprintf ("%s:%d" , info . Addresses . Boards [board .Name ], info . Ports . TcpServer ))
234+ go transp .HandleClient (tcp .NewClientConfig (backendTcpClientAddr ), fmt .Sprintf ("%s:%d" , adj . Info . Addresses [board .Name ], adj . Info . Ports [ TcpServer ] ))
225235 i ++
226236 }
227237
@@ -231,7 +241,7 @@ func main() {
231241 KeepAlive : time .Second ,
232242 },
233243 Context : context .TODO (),
234- }, fmt .Sprintf ("%s:%d" , info . Addresses . Backend , info . Ports . TcpServer ))
244+ }, fmt .Sprintf ("%s:%d" , adj . Info . Addresses [ BACKEND ], adj . Info . Ports [ TcpServer ] ))
235245
236246 // Start handling the sniffer
237247 source , err := pcap .OpenLive (dev .Name , 1500 , true , pcap .BlockForever )
@@ -247,10 +257,16 @@ func main() {
247257 }
248258
249259 boardIps := make ([]net.IP , 0 )
250- for _ , board := range info . Addresses . Boards {
251- boardIps = append (boardIps , board )
260+ for boardName , _ := range adj . Info . BoardIds {
261+ boardIps = append (boardIps , net . ParseIP ( adj . Info . Addresses [ boardName ]) )
252262 }
253- filter := getFilter (boardIps , info .Addresses .Backend , info .Ports .UDP )
263+
264+ boardIpsStr := make ([]string , 0 )
265+ for boardName , _ := range adj .Info .BoardIds {
266+ boardIpsStr = append (boardIpsStr , adj .Info .Addresses [boardName ])
267+ }
268+
269+ filter := getFilter (boardIps , net .ParseIP (adj .Info .Addresses [BACKEND ]), adj .Info .Ports [UDP ])
254270 trace .Warn ().Str ("filter" , filter ).Msg ("filter" )
255271 err = source .SetBPFFilter (filter )
256272 if err != nil {
@@ -267,8 +283,8 @@ func main() {
267283 if err != nil {
268284 fmt .Fprintf (os .Stderr , "error creating orderData handler: %v\n " , err )
269285 }
270- uploadableBords := common .Filter (common .Keys (info . Addresses . Boards ), func (item string ) bool {
271- return item != config . Excel . Parse . Global . BLCUAddressKey
286+ uploadableBords := common .Filter (common .Keys (adj . Info . Addresses ), func (item string ) bool {
287+ return item != adj . Info . Addresses [ BLCU ]
272288 })
273289 programableBoardsHandle , err := h .HandleDataJSON ("programableBoards.json" , uploadableBords )
274290 if err != nil {
@@ -292,7 +308,7 @@ func main() {
292308
293309 // <--- SNTP --->
294310 if * enableSNTP {
295- sntpAddr , err := net .ResolveUDPAddr ("udp" , fmt .Sprintf ("%s:%d" , info . Addresses . Backend , info . Ports . SNTP ))
311+ sntpAddr , err := net .ResolveUDPAddr ("udp" , fmt .Sprintf ("%s:%d" , adj . Info . Addresses [ BACKEND ], adj . Info . Ports [ SNTP ] ))
296312 if err != nil {
297313 fmt .Fprintf (os .Stderr , "error resolving sntp address: %v\n " , err )
298314 os .Exit (1 )
@@ -422,7 +438,7 @@ func getConfig(path string) Config {
422438 return config
423439}
424440
425- func getTransportDecEnc (info info .Info , podData pod_data.PodData ) (* presentation.Decoder , * presentation.Encoder ) {
441+ func getTransportDecEnc (info adj_module .Info , podData pod_data.PodData ) (* presentation.Decoder , * presentation.Encoder ) {
426442 decoder := presentation .NewDecoder (binary .LittleEndian , trace .Logger )
427443 encoder := presentation .NewEncoder (binary .LittleEndian , trace .Logger )
428444
@@ -485,13 +501,14 @@ func getTransportDecEnc(info info.Info, podData pod_data.PodData) (*presentation
485501 encoder .SetPacketEncoder (id , dataEncoder )
486502 }
487503
488- decoder .SetPacketDecoder (abstraction .PacketId (info .MessageIds . BlcuAck ), blcu_packet .NewDecoder ())
504+ decoder .SetPacketDecoder (abstraction .PacketId (info .MessageIds [ BlcuAck ] ), blcu_packet .NewDecoder ())
489505
506+ // TODO Solve this foking mess
490507 stateOrdersDecoder := order .NewDecoder (binary .LittleEndian )
491- stateOrdersDecoder .SetActionId (abstraction .PacketId (info .MessageIds . AddStateOrder ), stateOrdersDecoder .DecodeAdd )
492- stateOrdersDecoder .SetActionId (abstraction .PacketId (info .MessageIds . RemoveStateOrder ), stateOrdersDecoder .DecodeRemove )
493- decoder .SetPacketDecoder (abstraction .PacketId (info .MessageIds . AddStateOrder ), stateOrdersDecoder )
494- decoder .SetPacketDecoder (abstraction .PacketId (info .MessageIds . RemoveStateOrder ), stateOrdersDecoder )
508+ stateOrdersDecoder .SetActionId (abstraction .PacketId (info .MessageIds [ AddStateOrder ] ), stateOrdersDecoder .DecodeAdd )
509+ stateOrdersDecoder .SetActionId (abstraction .PacketId (info .MessageIds [ RemoveStateOrder ] ), stateOrdersDecoder .DecodeRemove )
510+ decoder .SetPacketDecoder (abstraction .PacketId (info .MessageIds [ AddStateOrder ] ), stateOrdersDecoder )
511+ decoder .SetPacketDecoder (abstraction .PacketId (info .MessageIds [ RemoveStateOrder ] ), stateOrdersDecoder )
495512
496513 protectionDecoder := protection .NewDecoder (binary .LittleEndian )
497514 protectionDecoder .SetSeverity (1000 , protection .FaultSeverity ).SetSeverity (2000 , protection .WarningSeverity ).SetSeverity (3000 , protection .OkSeverity )
0 commit comments