Skip to content

Commit 213f71f

Browse files
authored
Merge pull request #386 from HyperloopUPV-H8/backend/udp-server
feat(backend): use udp server
2 parents d052480 + 20535f6 commit 213f71f

File tree

3 files changed

+8
-58
lines changed

3 files changed

+8
-58
lines changed

backend/cmd/config.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ type Adj struct {
1515
}
1616

1717
type Network struct {
18-
Manual bool `toml:"manual"`
19-
DevMode bool `toml:"dev_mode"`
18+
Manual bool `toml:"manual"`
2019
}
2120

2221
type Transport struct {

backend/cmd/dev-config.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ test = true # Enable test mode
2424
# Network Configuration
2525
[network]
2626
manual = false # Manual network device selection
27-
dev_mode = true # IMPORTANT: Dev mode enabled - uses UDP server instead of packet sniffer
2827

2928
# Transport Configuration
3029
[transport]

backend/cmd/main.go

Lines changed: 7 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import (
4545
data_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/data"
4646
order_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/order"
4747
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport"
48-
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/sniffer"
4948
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tcp"
5049
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/udp"
5150
blcu_packet "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/blcu"
@@ -56,7 +55,6 @@ import (
5655
"github.com/HyperloopUPV-H8/h9-backend/pkg/vehicle"
5756
"github.com/HyperloopUPV-H8/h9-backend/pkg/websocket"
5857
"github.com/fatih/color"
59-
"github.com/google/gopacket/layers"
6058
"github.com/google/gopacket/pcap"
6159
"github.com/jmaralo/sntp"
6260
"github.com/pelletier/go-toml/v2"
@@ -139,24 +137,6 @@ func main() {
139137
trace.Fatal().Err(err).Msg("creating podData")
140138
}
141139

142-
var dev pcap.Interface
143-
if !config.Network.DevMode {
144-
// Only select device if not in dev mode (sniffer requires device selection)
145-
if *networkDevice != -1 {
146-
devs, err := pcap.FindAllDevs()
147-
if err != nil {
148-
trace.Fatal().Err(err).Msg("Getting devices")
149-
}
150-
151-
dev = devs[*networkDevice]
152-
} else {
153-
dev, err = selectDev(adj.Info.Addresses, config)
154-
if err != nil {
155-
trace.Fatal().Err(err).Msg("Error selecting device")
156-
}
157-
}
158-
}
159-
160140
vehicleOrders, err := vehicle_models.NewVehicleOrders(podData.Boards, adj.Info.Addresses[BLCU])
161141
if err != nil {
162142
trace.Fatal().Err(err).Msg("creating vehicleOrders")
@@ -369,42 +349,14 @@ func main() {
369349
}, fmt.Sprintf("%s:%d", adj.Info.Addresses[BACKEND], adj.Info.Ports[TcpServer]))
370350

371351
// Start handling network packets (either sniffer or UDP server based on dev mode)
372-
if config.Network.DevMode {
373-
// Dev mode: Use UDP server
374-
trace.Info().Msg("Starting in dev mode with UDP server")
375-
udpServer := udp.NewServer(adj.Info.Addresses[BACKEND], adj.Info.Ports[UDP], &trace.Logger)
376-
err := udpServer.Start()
377-
if err != nil {
378-
panic("failed to start UDP server: " + err.Error())
379-
}
380-
go transp.HandleUDPServer(udpServer)
381-
} else {
382-
// Production mode: Use packet sniffer
383-
source, err := pcap.OpenLive(dev.Name, 1500, true, pcap.BlockForever)
384-
if err != nil {
385-
panic("failed to obtain sniffer source: " + err.Error())
386-
}
387-
388-
if *playbackFile != "" {
389-
source, err = pcap.OpenOffline(*playbackFile)
390-
if err != nil {
391-
panic("failed to obtain sniffer source: " + err.Error())
392-
}
393-
}
394-
395-
boardIps := make([]net.IP, 0, len(adj.Info.BoardIds))
396-
for boardName := range adj.Info.BoardIds {
397-
boardIps = append(boardIps, net.ParseIP(adj.Info.Addresses[boardName]))
398-
}
399-
400-
filter := getFilter(boardIps, net.ParseIP(adj.Info.Addresses[BACKEND]), adj.Info.Ports[UDP])
401-
trace.Warn().Str("filter", filter).Msg("filter")
402-
err = source.SetBPFFilter(filter)
403-
if err != nil {
404-
panic("failed to compile bpf filter")
405-
}
406-
go transp.HandleSniffer(sniffer.New(source, &layers.LayerTypeEthernet, trace.Logger))
352+
// Dev mode: Use UDP server
353+
trace.Info().Msg("Starting UDP server")
354+
udpServer := udp.NewServer(adj.Info.Addresses[BACKEND], adj.Info.Ports[UDP], &trace.Logger)
355+
err = udpServer.Start()
356+
if err != nil {
357+
panic("failed to start UDP server: " + err.Error())
407358
}
359+
go transp.HandleUDPServer(udpServer)
408360

409361
// <--- http server --->
410362
podDataHandle, err := h.HandleDataJSON("podData.json", pod_data.GetDataOnlyPodData(podData))

0 commit comments

Comments
 (0)