Skip to content

Commit 8448381

Browse files
authored
Merge pull request #441 from Hyperloop-UPV/backend/remove-blcu
feat(backend): Remove BLCU
2 parents 5a850e9 + 7e4adad commit 8448381

24 files changed

Lines changed: 95 additions & 1550 deletions

backend/cmd/config.toml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,6 @@ max_retries = 0 # Maximum retries before cycling (0 = infinite retr
3333
connection_timeout_ms = 1000 # Connection timeout in milliseconds
3434
keep_alive_ms = 1000 # Keep-alive interval in milliseconds
3535

36-
# BLCU (Boot Loader Control Unit) Configuration
37-
[blcu]
38-
ip = "127.0.0.1" # TFTP server IP address
39-
download_order_id = 0 # Packet ID for download orders (0 = use default)
40-
upload_order_id = 0 # Packet ID for upload orders (0 = use default)
41-
4236
# TFTP Configuration
4337
[tftp]
4438
block_size = 131072 # TFTP block size in bytes (128kB)

backend/cmd/dev-config.toml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,7 @@ timeout_ms = 5000 # Timeout for TFTP operations in milliseconds
6666
backoff_factor = 2 # Backoff factor for retries
6767
enable_progress = true # Enable progress updates during transfers
6868

69-
# BLCU Configuration
70-
[blcu]
71-
ip = "10.10.10.5" # BLCU IP address
72-
download_order_id = 0 # Order ID for download operations (0 = use default)
73-
upload_order_id = 0 # Order ID for upload operations (0 = use default)
69+
7470

7571
# Logging Configuration
7672
[logging]

backend/cmd/main.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ const (
2323
TcpServer = "TCP_SERVER"
2424
UDP = "UDP"
2525
SNTP = "SNTP"
26-
BlcuAck = "blcu_ack"
2726
AddStateOrder = "add_state_order"
2827
RemoveStateOrder = "remove_state_order"
2928
)
@@ -62,7 +61,7 @@ func main() {
6261
}
6362

6463
// <--- vehicle orders --->
65-
vehicleOrders, err := vehicle_models.NewVehicleOrders(podData.Boards, adj.Info.Addresses[BLCU])
64+
vehicleOrders, err := vehicle_models.NewVehicleOrders(podData.Boards)
6665
if err != nil {
6766
trace.Fatal().Err(err).Msg("creating vehicleOrders")
6867
}

backend/cmd/setup_transport.go

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ import (
1313
"github.com/HyperloopUPV-H8/h9-backend/internal/pod_data"
1414
"github.com/HyperloopUPV-H8/h9-backend/internal/utils"
1515
"github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
16-
"github.com/HyperloopUPV-H8/h9-backend/pkg/boards"
1716
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport"
1817
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tcp"
1918
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/udp"
20-
blcu_packet "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/blcu"
2119
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/data"
2220
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/order"
2321
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/protection"
@@ -45,11 +43,6 @@ func configureTransport(
4543
transp.SetTargetIp(adj.Info.Addresses[board.Name], abstraction.TransportTarget(board.Name))
4644
}
4745

48-
// If BLCU is configured set BLCU packet ID mappings
49-
if common.Contains(config.Vehicle.Boards, "BLCU") {
50-
configureBLCUTransport(adj, transp, config)
51-
}
52-
5346
// Start handling TCP CLIENT connections
5447
configureTCPClientTransport(adj, podData, transp, config)
5548

@@ -61,36 +54,6 @@ func configureTransport(
6154

6255
}
6356

64-
// configureBLCUTransport sets the packet IDs and target IP for the BLCU board.
65-
// It prefers values from config, falls back to ADJ and finally to a loopback default.
66-
func configureBLCUTransport(adj adj_module.ADJ,
67-
transp *transport.Transport,
68-
config config.Config) {
69-
// Use configurable packet IDs or defaults
70-
downloadOrderID := config.Blcu.DownloadOrderId
71-
uploadOrderID := config.Blcu.UploadOrderId
72-
if downloadOrderID == 0 {
73-
downloadOrderID = boards.DefaultBlcuDownloadOrderId
74-
}
75-
if uploadOrderID == 0 {
76-
uploadOrderID = boards.DefaultBlcuUploadOrderId
77-
}
78-
79-
transp.SetIdTarget(abstraction.PacketId(downloadOrderID), abstraction.TransportTarget("BLCU"))
80-
transp.SetIdTarget(abstraction.PacketId(uploadOrderID), abstraction.TransportTarget("BLCU"))
81-
82-
// Use BLCU address from config, ADJ, or default
83-
blcuIP := config.Blcu.IP
84-
if blcuIP == "" {
85-
if adjBlcuIP, exists := adj.Info.Addresses[BLCU]; exists {
86-
blcuIP = adjBlcuIP
87-
} else {
88-
blcuIP = "127.0.0.1"
89-
}
90-
}
91-
transp.SetTargetIp(blcuIP, abstraction.TransportTarget("BLCU"))
92-
}
93-
9457
func configureTCPClientTransport(
9558
adj adj_module.ADJ,
9659
podData pod_data.PodData,
@@ -247,9 +210,6 @@ func getTransportDecEnc(info adj_module.Info, podData pod_data.PodData) (*presen
247210
encoder.SetPacketEncoder(id, dataEncoder)
248211
}
249212

250-
// Register BLCU ack decoder
251-
decoder.SetPacketDecoder(abstraction.PacketId(info.MessageIds[BlcuAck]), blcu_packet.NewDecoder())
252-
253213
// TODO Solve this foking mess, I have tried...
254214
stateOrdersDecoder := order.NewDecoder(binary.LittleEndian)
255215
stateOrdersDecoder.SetActionId(abstraction.PacketId(info.MessageIds[AddStateOrder]), stateOrdersDecoder.DecodeAdd)

backend/cmd/setup_vehicle.go

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ import (
1818
"github.com/HyperloopUPV-H8/h9-backend/internal/pod_data"
1919
"github.com/HyperloopUPV-H8/h9-backend/internal/update_factory"
2020
"github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
21-
"github.com/HyperloopUPV-H8/h9-backend/pkg/boards"
2221
"github.com/HyperloopUPV-H8/h9-backend/pkg/broker"
23-
blcu_topics "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/blcu"
2422
connection_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/connection"
2523
data_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/data"
2624
logger_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/logger"
@@ -75,7 +73,6 @@ func configureBroker(subloggers abstraction.SubloggersMap, loggerHandler *logger
7573
})
7674

7775
broker.SetPool(pool)
78-
blcu_topics.RegisterTopics(broker, pool)
7976

8077
return broker, cleanup
8178
}
@@ -101,45 +98,6 @@ func configureVehicle(
10198
vehicle.SetIdToBoardName(idToBoard)
10299
vehicle.SetTransport(transp)
103100

104-
// Register BLCU board for handling bootloader operations
105-
if blcuIP, exists := adj.Info.Addresses[BLCU]; exists {
106-
blcuId, idExists := adj.Info.BoardIds["BLCU"]
107-
if !idExists {
108-
return fmt.Errorf("BLCU IP found in ADJ but board ID missing")
109-
} else {
110-
// Get configurable order IDs or use defaults
111-
downloadOrderId := config.Blcu.DownloadOrderId
112-
uploadOrderId := config.Blcu.UploadOrderId
113-
if downloadOrderId == 0 {
114-
downloadOrderId = boards.DefaultBlcuDownloadOrderId
115-
}
116-
if uploadOrderId == 0 {
117-
uploadOrderId = boards.DefaultBlcuUploadOrderId
118-
}
119-
120-
tftpConfig := boards.TFTPConfig{
121-
BlockSize: config.TFTP.BlockSize,
122-
Retries: config.TFTP.Retries,
123-
TimeoutMs: config.TFTP.TimeoutMs,
124-
BackoffFactor: config.TFTP.BackoffFactor,
125-
EnableProgress: config.TFTP.EnableProgress,
126-
}
127-
blcuBoard := boards.NewWithConfig(blcuIP, tftpConfig, abstraction.BoardId(blcuId), downloadOrderId, uploadOrderId)
128-
vehicle.AddBoard(blcuBoard)
129-
vehicle.SetBlcuId(abstraction.BoardId(blcuId))
130-
131-
trace.
132-
Info().
133-
Str("ip", blcuIP).
134-
Int("id", int(blcuId)).
135-
Uint16("download_order_id", downloadOrderId).
136-
Uint16("upload_order_id", uploadOrderId).
137-
Msg("BLCU board registered")
138-
}
139-
} else {
140-
trace.Warn().Msg("BLCU not found in ADJ configuration - bootloader operations unavailable")
141-
}
142-
143101
return nil
144102

145103
}

backend/internal/config/config_types.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@ type TFTP struct {
2626
EnableProgress bool `toml:"enable_progress"`
2727
}
2828

29-
type Blcu struct {
30-
IP string `toml:"ip"`
31-
DownloadOrderId uint16 `toml:"download_order_id"`
32-
UploadOrderId uint16 `toml:"upload_order_id"`
33-
}
34-
3529
type TCP struct {
3630
BackoffMinMs int `toml:"backoff_min_ms"`
3731
BackoffMaxMs int `toml:"backoff_max_ms"`
@@ -54,6 +48,5 @@ type Config struct {
5448
Transport Transport
5549
TFTP TFTP
5650
TCP TCP
57-
Blcu Blcu
5851
Logging Logging
5952
}

backend/internal/vehicle/models/order_data.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type StateOrderDescription struct {
3636
Enabled bool `json:"enabled"`
3737
}
3838

39-
func NewVehicleOrders(boards []pod_data.Board, blcuName string) (VehicleOrders, error) {
39+
func NewVehicleOrders(boards []pod_data.Board) (VehicleOrders, error) {
4040
vehicleOrders := VehicleOrders{
4141
Boards: make([]BoardOrders, 0),
4242
}

0 commit comments

Comments
 (0)