Skip to content

Commit 7bff5a0

Browse files
authored
Merge pull request #167 from HyperloopUPV-H8/backend/adj
[backend][2] ADJ
2 parents 5f07cb5 + 7b094e4 commit 7bff5a0

4 files changed

Lines changed: 193 additions & 66 deletions

File tree

backend/cmd/config.toml

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,4 @@ connections = "/backend"
1111
files = "/"
1212

1313
[vehicle]
14-
boards = ["VCU"]
15-
16-
[excel.download]
17-
id = "1NyNaAOw_6iWtnCpEg73AtSSFx1fMdhPRmmdOhjgjCZI"
18-
name = "ade.xlsx"
19-
path = "."
20-
21-
[excel.parse]
22-
global_sheet_prefix = "GLOBAL "
23-
board_sheet_prefix = "BOARD "
24-
table_prefix = "[TABLE] "
25-
[excel.parse.global]
26-
address_table = "addresses"
27-
backend_key = "Backend"
28-
blcu_address_key = "BLCU"
29-
units_table = "units"
30-
ports_table = "ports"
31-
board_ids_table = "board_ids"
32-
message_ids_table = "message_ids"
14+
boardsList = ["VCU"]

backend/cmd/main.go

Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import (
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+
6171
var traceLevel = flag.String("trace", "info", "set the trace level (\"fatal\", \"error\", \"warn\", \"info\", \"debug\", \"trace\")")
6272
var traceFile = flag.String("log", "trace.json", "set the trace log file")
6373
var 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

Comments
 (0)