From c06642cb87006c7341328310f938b4cfb50e29c7 Mon Sep 17 00:00:00 2001 From: msanlli Date: Tue, 25 Feb 2025 12:21:44 +0100 Subject: [PATCH 1/3] update pkg adj --- backend/pkg/adj/adj.go | 177 +-------------------------- backend/pkg/adj/boards.go | 245 ++++++++++++++++++++++++++++++++++++++ backend/pkg/adj/git.go | 98 +++++++++++++++ backend/pkg/adj/models.go | 38 ++++-- 4 files changed, 373 insertions(+), 185 deletions(-) create mode 100644 backend/pkg/adj/boards.go create mode 100644 backend/pkg/adj/git.go diff --git a/backend/pkg/adj/adj.go b/backend/pkg/adj/adj.go index 9e57ecd3c..7708aaa35 100644 --- a/backend/pkg/adj/adj.go +++ b/backend/pkg/adj/adj.go @@ -3,10 +3,8 @@ package adj import ( "encoding/json" "os" - "path" "github.com/HyperloopUPV-H8/h9-backend/internal/utils" - "github.com/go-git/go-git/v5" ) const ( @@ -14,8 +12,8 @@ const ( RepoPath = "./adj/" // Path where the ADJ repository is cloned ) -func NewADJ() (ADJ, error) { - infoRaw, boardsRaw, err := downloadADJ() +func NewADJ(AdjBranch string) (ADJ, error) { + infoRaw, boardsRaw, err := downloadADJ(AdjBranch) if err != nil { return ADJ{}, err } @@ -73,15 +71,8 @@ func NewADJ() (ADJ, error) { return adj, nil } -func downloadADJ() (json.RawMessage, json.RawMessage, error) { - if !checkRepo() { - _, err := git.PlainClone(RepoPath, false, &git.CloneOptions{ - URL: RepoUrl, - }) - if err != nil { - return nil, nil, err - } - } +func downloadADJ(AdjBranch string) (json.RawMessage, json.RawMessage, error) { + updateRepo(AdjBranch) // The BoardIds are applied in the NewADJ function by the getBoardIds function info, err := os.ReadFile(RepoPath + "general_info.json") @@ -96,163 +87,3 @@ func downloadADJ() (json.RawMessage, json.RawMessage, error) { return info, boardsList, nil } - -func checkRepo() bool { - if _, err := os.Stat(RepoPath); os.IsNotExist(err) { - return false - } - - return true -} - -func getBoards(boardsList map[string]string) (map[string]Board, error) { - boards := make(map[string]Board, len(boardsList)) - for boardName, boardPath := range boardsList { - fullPath := path.Join(RepoPath, boardPath) - boardRaw, err := os.ReadFile(fullPath) - if err != nil { - return nil, err - } - - var boardJSON BoardJSON - if err = json.Unmarshal(boardRaw, &boardJSON); err != nil { - return nil, err - } - - measPathsFr := make([]string, 0) - for _, measPath := range boardJSON.MeasurementsPaths { - measPathsFr = append(measPathsFr, path.Join(RepoPath, "boards", boardName, measPath)) - } - boardJSON.MeasurementsPaths = measPathsFr - - packetPathsFr := make([]string, 0) - for _, packetPath := range boardJSON.PacketsPaths { - packetPathsFr = append(packetPathsFr, path.Join(RepoPath, "boards", boardName, packetPath)) - } - boardJSON.PacketsPaths = packetPathsFr - - board := Board{ - Name: boardName, - IP: boardJSON.IP, - } - board.Packets, err = getBoardPackets(boardJSON.PacketsPaths) - if err != nil { - return nil, err - } - - board.Measurements, err = getBoardMeasurements(boardJSON.MeasurementsPaths) - if err != nil { - return nil, err - } - board.LookUpMeasurements = make(map[string]Measurement, len(board.Measurements)) - - for _, measurement := range board.Measurements { - board.LookUpMeasurements[measurement.Id] = measurement - } - board.Structures = getBoardStructures(board) - - boards[boardName] = board - } - - return boards, nil -} - -func getBoardPackets(packetsPaths []string) ([]Packet, error) { - packets := make([]Packet, 0) - for _, packetPath := range packetsPaths { - if _, err := os.Stat(packetPath); os.IsNotExist(err) { - continue - } - - packetRaw, err := os.ReadFile(packetPath) - if err != nil { - return nil, err - } - - // Magic happens here - type PacketJSON struct { - Packet []Packet `json:"packets"` - } - - packetsJSON := PacketJSON{} - if err = json.Unmarshal(packetRaw, &packetsJSON); err != nil { - return nil, err - } - for _, packetTMP := range packetsJSON.Packet { - packets = append(packets, packetTMP) - } - } - - return packets, nil -} - -func getBoardMeasurements(measurementsPaths []string) ([]Measurement, error) { - measurements := make([]Measurement, 0) - - for _, measurementPath := range measurementsPaths { - if _, err := os.Stat(measurementPath); os.IsNotExist(err) { - continue - } - - measurementRaw, err := os.ReadFile(measurementPath) - if err != nil { - return nil, err - } - - // Absolutely doing tricks on it AGAIN - @msanlli - type MeasurementJSON struct { - Measurements []Measurement `json:"measurements"` - } - - measurementsJSON := MeasurementJSON{} - if err = json.Unmarshal(measurementRaw, &measurementsJSON); err != nil { - return nil, err - } - for _, measurementTMP := range measurementsJSON.Measurements { - measurements = append(measurements, measurementTMP) - } - } - - return measurements, nil -} - -func getBoardIds(boards map[string]string) (map[string]uint16, error) { - boardIds := make(map[string]uint16, len(boards)) - for boardName, boardPath := range boards { - fullPath := path.Join(RepoPath, boardPath) - boardRaw, err := os.ReadFile(fullPath) - if err != nil { - return nil, err - } - - var boardJSON BoardJSON - if err = json.Unmarshal(boardRaw, &boardJSON); err != nil { - return nil, err - } - - boardIds[boardName] = boardJSON.ID - } - - return boardIds, nil -} - -func getBoardStructures(board Board) []Structure { - structures := make([]Structure, len(board.Packets)) - for i, packet := range board.Packets { - structures[i] = Structure{ - Packet: packet, - Measurements: board.Measurements, - } - } - - return structures -} - -func getAddresses(boards map[string]Board) (map[string]string, error) { - addresses := make(map[string]string, len(boards)) - for boardName, board := range boards { - addresses[boardName] = board.IP - } - - return addresses, nil -} diff --git a/backend/pkg/adj/boards.go b/backend/pkg/adj/boards.go new file mode 100644 index 000000000..2ea61038e --- /dev/null +++ b/backend/pkg/adj/boards.go @@ -0,0 +1,245 @@ +package adj + +import ( + "encoding/json" + "os" + "path" +) + +func getBoards(boardsList map[string]string) (map[string]Board, error) { + boards := make(map[string]Board, len(boardsList)) + for boardName, boardPath := range boardsList { + fullPath := path.Join(RepoPath, boardPath) + boardRaw, err := os.ReadFile(fullPath) + if err != nil { + return nil, err + } + + var boardJSON BoardJSON + if err = json.Unmarshal(boardRaw, &boardJSON); err != nil { + return nil, err + } + + measPathsFr := make([]string, 0) + for _, measPath := range boardJSON.MeasurementsPaths { + measPathsFr = append(measPathsFr, path.Join(RepoPath, "boards", boardName, measPath)) + } + boardJSON.MeasurementsPaths = measPathsFr + + packetPathsFr := make([]string, 0) + for _, packetPath := range boardJSON.PacketsPaths { + packetPathsFr = append(packetPathsFr, path.Join(RepoPath, "boards", boardName, packetPath)) + } + boardJSON.PacketsPaths = packetPathsFr + + board := Board{ + Name: boardName, + IP: boardJSON.IP, + } + + boardPackets, err := getBoardPackets(boardJSON.PacketsPaths) + if err != nil { + return nil, err + } + + board.Measurements, err = getBoardMeasurements(boardJSON.MeasurementsPaths) + if err != nil { + return nil, err + } + + board.LookUpMeasurements = make(map[string]Measurement, len(board.Measurements)) + for _, measurement := range board.Measurements { + board.LookUpMeasurements[measurement.Id] = measurement + } + + board.Packets = lookUpMeas(boardPackets, board.LookUpMeasurements) + + board.Structures = getBoardStructures(board) + + // DEBUG + for _, meas := range board.Measurements { + println(meas.SafeRange[0], ", ", meas.SafeRange[1]) + println(meas.WarningRange[0], ", ", meas.WarningRange[1]) + } + + boards[boardName] = board + } + + return boards, nil +} + +func lookUpMeas(packetsTMP []Packet, lookUpMeas map[string]Measurement) []Packet { + packetsFNL := make([]Packet, 0) + for _, packetTMP := range packetsTMP { + measFNL := make([]Measurement, 0) + for _, measId := range packetTMP.VariablesIds { + meas := lookUpMeas[measId] + measFNL = append(measFNL, meas) + } + + packetTMP.Variables = measFNL + packetsFNL = append(packetsFNL, packetTMP) + } + + return packetsFNL +} + +func getBoardPackets(packetsPaths []string) ([]Packet, error) { + packets := make([]Packet, 0) + + for _, packetPath := range packetsPaths { + if _, err := os.Stat(packetPath); os.IsNotExist(err) { + continue + } + + packetRaw, err := os.ReadFile(packetPath) + if err != nil { + return nil, err + } + + packet := make([]Packet, 0) + + if err = json.Unmarshal(packetRaw, &packet); err != nil { + return nil, err + } + + packets = append(packets, packet...) + } + + return packets, nil +} + +// Absolutely doing tricks on it AGAIN, AGAIN - @msanlli +func getBoardMeasurements(measurementsPaths []string) ([]Measurement, error) { + measurementsJSON := make([]Measurement, 0) + + for _, measurementPath := range measurementsPaths { + if _, err := os.Stat(measurementPath); os.IsNotExist(err) { + println("ADJ Error: Measurement file path not found") + continue + } + + measTMP := make([]Measurement, 0) + + measurementRaw, err := os.ReadFile(measurementPath) + if err != nil { + return nil, err + } + + if err = json.Unmarshal(measurementRaw, &measTMP); err != nil { + return nil, err + } + + measurementsJSON = append(measurementsJSON, measTMP...) + } + + measurements, err := measTranslate(measurementsJSON) + if err != nil { + return nil, err + } + + return measurements, nil +} + +func measTranslate(measurementsTMP []Measurement) ([]Measurement, error) { + measurements := make([]Measurement, 0) + + for _, measJSON := range measurementsTMP { + var err error + + measJSON.SafeRange, measJSON.WarningRange, err = getRanges(measJSON) + if err != nil { + return nil, err + } + + measurements = append(measurements, measJSON) + } + + return measurements, nil +} + +func getRanges(measTMP Measurement) ([]*float64, []*float64, error) { + safeRange := make([]*float64, 0) + warningRange := make([]*float64, 0) + + if measTMP.OutOfRange.Safe == nil && measTMP.OutOfRange.Warning == nil { + if measTMP.Below.Safe == nil && measTMP.Below.Warning == nil && measTMP.Above.Safe == nil && measTMP.Above.Warning == nil { + safeRange = append(safeRange, []*float64{nil, nil}...) + warningRange = append(warningRange, []*float64{nil, nil}...) + } else if measTMP.Below.Safe == nil { + safeRange = append(safeRange, []*float64{nil}...) + } else { + safeRange = append(safeRange, measTMP.Below.Safe) + } + + if measTMP.Above.Safe == nil { + safeRange = append(safeRange, []*float64{nil}...) + } else { + safeRange = append(safeRange, measTMP.Above.Safe) + } + + if measTMP.Below.Warning == nil { + warningRange = append(warningRange, []*float64{nil}...) + } else { + warningRange = append(warningRange, measTMP.Below.Warning) + } + + if measTMP.Above.Warning == nil { + warningRange = append(warningRange, []*float64{nil}...) + } else { + warningRange = append(warningRange, measTMP.Above.Warning) + } + } else if measTMP.OutOfRange.Safe == nil { + safeRange = append(safeRange, []*float64{nil, nil}...) + warningRange = append(warningRange, measTMP.OutOfRange.Warning...) + } else if measTMP.OutOfRange.Warning == nil { + safeRange = append(safeRange, measTMP.OutOfRange.Safe...) + warningRange = append(warningRange, []*float64{nil, nil}...) + } else { + safeRange = append(safeRange, measTMP.OutOfRange.Safe...) + warningRange = append(warningRange, measTMP.OutOfRange.Warning...) + } + + return safeRange, warningRange, nil +} + +func getBoardIds(boards map[string]string) (map[string]uint16, error) { + boardIds := make(map[string]uint16, len(boards)) + for boardName, boardPath := range boards { + fullPath := path.Join(RepoPath, boardPath) + boardRaw, err := os.ReadFile(fullPath) + if err != nil { + return nil, err + } + + var boardJSON BoardJSON + if err = json.Unmarshal(boardRaw, &boardJSON); err != nil { + return nil, err + } + + boardIds[boardName] = boardJSON.ID + } + + return boardIds, nil +} + +func getBoardStructures(board Board) []Structure { + structures := make([]Structure, len(board.Packets)) + for i, packet := range board.Packets { + structures[i] = Structure{ + Packet: packet, + Measurements: board.Measurements, + } + } + + return structures +} + +func getAddresses(boards map[string]Board) (map[string]string, error) { + addresses := make(map[string]string, len(boards)) + for boardName, board := range boards { + addresses[boardName] = board.IP + } + + return addresses, nil +} diff --git a/backend/pkg/adj/git.go b/backend/pkg/adj/git.go new file mode 100644 index 000000000..490955117 --- /dev/null +++ b/backend/pkg/adj/git.go @@ -0,0 +1,98 @@ +package adj + +import ( + "os" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/plumbing" +) + +// WARNING: Doing tricks on it +func updateRepo(AdjBranch string) error { + var repo *git.Repository + var err error + + if AdjBranch == "" { + // Makes use of submodule + return nil + } else { + if _, err = os.Stat(RepoPath); os.IsNotExist(err) { + repo, err = git.PlainClone(RepoPath, false, &git.CloneOptions{ + URL: RepoUrl, + ReferenceName: plumbing.NewBranchReferenceName(AdjBranch), + SingleBranch: true, + Depth: 1, + }) + if err != nil { + return err + } + } else { + repo, err = git.PlainOpen(RepoPath) + if err != nil { + return err + } + } + + err = repo.Fetch(&git.FetchOptions{ + RemoteName: "origin", + Force: true, + }) + if err != nil && err != git.NoErrAlreadyUpToDate { + return err + } + + head, err := repo.Head() + if err != nil { + return err + } + + branch := head.Name().Short() + + worktree, err := repo.Worktree() + if err != nil { + return err + } + + if branch != AdjBranch { + localBranchRef := plumbing.NewBranchReferenceName(AdjBranch) + _, err = repo.Reference(localBranchRef, false) + if err != nil { + remoteBranchRef := plumbing.NewRemoteReferenceName("origin", AdjBranch) + remoteRef, err2 := repo.Reference(remoteBranchRef, true) + if err2 != nil { + return err2 + } + + err = worktree.Checkout(&git.CheckoutOptions{ + Branch: localBranchRef, + Create: true, + Force: true, + Hash: remoteRef.Hash(), + }) + if err != nil { + println(err.Error()) + return err + } + } else { + err = worktree.Checkout(&git.CheckoutOptions{ + Branch: localBranchRef, + Force: true, + }) + } + } + + err = worktree.Pull(&git.PullOptions{ + RemoteName: "origin", + SingleBranch: true, + }) + if err != nil { + if err == git.NoErrAlreadyUpToDate { + return nil + } else { + return err + } + } + } + + return nil +} diff --git a/backend/pkg/adj/models.go b/backend/pkg/adj/models.go index f0ad09738..5619833bf 100644 --- a/backend/pkg/adj/models.go +++ b/backend/pkg/adj/models.go @@ -40,21 +40,35 @@ type Board struct { } type Packet struct { - Id string `json:"id"` - Name string `json:"name"` - Type string `json:"type"` - Variables []Measurement `json:"variables"` + Id uint16 `json:"id"` + Name string `json:"name"` + Type string `json:"type"` + Variables []Measurement + VariablesIds []string `json:"variables"` } type Measurement struct { - Id string `json:"id"` - Name string `json:"name"` - Type string `json:"type"` - PodUnits string `json:"podUnits"` - DisplayUnits string `json:"displayUnits"` - SafeRange []*float64 `json:"safeRange"` - WarningRange []*float64 `json:"warningRange"` - EnumValues []string `json:"enumValues"` + Id string `json:"id"` + Name string `json:"name"` + Type string `json:"type"` + PodUnits string `json:"podUnits"` + DisplayUnits string `json:"displayUnits"` + EnumValues []string `json:"enumValues"` + SafeRange []*float64 + WarningRange []*float64 + Below BelowOrAbove `json:"below"` + Above BelowOrAbove `json:"above"` + OutOfRange OutOfRange `json:"out_of_range"` +} + +type BelowOrAbove struct { + Safe *float64 `json:"safe"` + Warning *float64 `json:"warning"` +} + +type OutOfRange struct { + Safe []*float64 `json:"safe"` + Warning []*float64 `json:"warning"` } type Structure struct { From 93827149bd426d2954077ecddb75394a8057d4ab Mon Sep 17 00:00:00 2001 From: msanlli Date: Tue, 25 Feb 2025 12:32:04 +0100 Subject: [PATCH 2/3] implement git har pull --- backend/internal/adj/git.go | 77 +++++-------------------------------- backend/pkg/adj/git.go | 77 +++++-------------------------------- 2 files changed, 20 insertions(+), 134 deletions(-) diff --git a/backend/internal/adj/git.go b/backend/internal/adj/git.go index 490955117..5a6ee2687 100644 --- a/backend/internal/adj/git.go +++ b/backend/internal/adj/git.go @@ -9,86 +9,29 @@ import ( // WARNING: Doing tricks on it func updateRepo(AdjBranch string) error { - var repo *git.Repository var err error if AdjBranch == "" { - // Makes use of submodule + // Makes use of user's custom ADJ return nil } else { + cloneOptions := &git.CloneOptions{ + URL: RepoUrl, + ReferenceName: plumbing.NewBranchReferenceName(AdjBranch), + SingleBranch: true, + Depth: 1, + } if _, err = os.Stat(RepoPath); os.IsNotExist(err) { - repo, err = git.PlainClone(RepoPath, false, &git.CloneOptions{ - URL: RepoUrl, - ReferenceName: plumbing.NewBranchReferenceName(AdjBranch), - SingleBranch: true, - Depth: 1, - }) + _, err = git.PlainClone(RepoPath, false, cloneOptions) if err != nil { return err } } else { - repo, err = git.PlainOpen(RepoPath) - if err != nil { + if err = os.RemoveAll(RepoPath); err != nil { return err } - } - - err = repo.Fetch(&git.FetchOptions{ - RemoteName: "origin", - Force: true, - }) - if err != nil && err != git.NoErrAlreadyUpToDate { - return err - } - - head, err := repo.Head() - if err != nil { - return err - } - - branch := head.Name().Short() - - worktree, err := repo.Worktree() - if err != nil { - return err - } - - if branch != AdjBranch { - localBranchRef := plumbing.NewBranchReferenceName(AdjBranch) - _, err = repo.Reference(localBranchRef, false) + _, err = git.PlainClone(RepoPath, false, cloneOptions) if err != nil { - remoteBranchRef := plumbing.NewRemoteReferenceName("origin", AdjBranch) - remoteRef, err2 := repo.Reference(remoteBranchRef, true) - if err2 != nil { - return err2 - } - - err = worktree.Checkout(&git.CheckoutOptions{ - Branch: localBranchRef, - Create: true, - Force: true, - Hash: remoteRef.Hash(), - }) - if err != nil { - println(err.Error()) - return err - } - } else { - err = worktree.Checkout(&git.CheckoutOptions{ - Branch: localBranchRef, - Force: true, - }) - } - } - - err = worktree.Pull(&git.PullOptions{ - RemoteName: "origin", - SingleBranch: true, - }) - if err != nil { - if err == git.NoErrAlreadyUpToDate { - return nil - } else { return err } } diff --git a/backend/pkg/adj/git.go b/backend/pkg/adj/git.go index 490955117..5a6ee2687 100644 --- a/backend/pkg/adj/git.go +++ b/backend/pkg/adj/git.go @@ -9,86 +9,29 @@ import ( // WARNING: Doing tricks on it func updateRepo(AdjBranch string) error { - var repo *git.Repository var err error if AdjBranch == "" { - // Makes use of submodule + // Makes use of user's custom ADJ return nil } else { + cloneOptions := &git.CloneOptions{ + URL: RepoUrl, + ReferenceName: plumbing.NewBranchReferenceName(AdjBranch), + SingleBranch: true, + Depth: 1, + } if _, err = os.Stat(RepoPath); os.IsNotExist(err) { - repo, err = git.PlainClone(RepoPath, false, &git.CloneOptions{ - URL: RepoUrl, - ReferenceName: plumbing.NewBranchReferenceName(AdjBranch), - SingleBranch: true, - Depth: 1, - }) + _, err = git.PlainClone(RepoPath, false, cloneOptions) if err != nil { return err } } else { - repo, err = git.PlainOpen(RepoPath) - if err != nil { + if err = os.RemoveAll(RepoPath); err != nil { return err } - } - - err = repo.Fetch(&git.FetchOptions{ - RemoteName: "origin", - Force: true, - }) - if err != nil && err != git.NoErrAlreadyUpToDate { - return err - } - - head, err := repo.Head() - if err != nil { - return err - } - - branch := head.Name().Short() - - worktree, err := repo.Worktree() - if err != nil { - return err - } - - if branch != AdjBranch { - localBranchRef := plumbing.NewBranchReferenceName(AdjBranch) - _, err = repo.Reference(localBranchRef, false) + _, err = git.PlainClone(RepoPath, false, cloneOptions) if err != nil { - remoteBranchRef := plumbing.NewRemoteReferenceName("origin", AdjBranch) - remoteRef, err2 := repo.Reference(remoteBranchRef, true) - if err2 != nil { - return err2 - } - - err = worktree.Checkout(&git.CheckoutOptions{ - Branch: localBranchRef, - Create: true, - Force: true, - Hash: remoteRef.Hash(), - }) - if err != nil { - println(err.Error()) - return err - } - } else { - err = worktree.Checkout(&git.CheckoutOptions{ - Branch: localBranchRef, - Force: true, - }) - } - } - - err = worktree.Pull(&git.PullOptions{ - RemoteName: "origin", - SingleBranch: true, - }) - if err != nil { - if err == git.NoErrAlreadyUpToDate { - return nil - } else { return err } } From c53fd195f9ccf903600218ba23f42d66de6c18c9 Mon Sep 17 00:00:00 2001 From: msanlli Date: Tue, 25 Feb 2025 13:20:17 +0100 Subject: [PATCH 3/3] automatic device selector --- backend/cmd/adj | 1 - backend/cmd/config.go | 6 +++++ backend/cmd/config.toml | 21 +++++++++++++----- backend/cmd/main.go | 40 +++++++++++++++++++++++----------- backend/internal/adj/boards.go | 6 ----- backend/pkg/adj/boards.go | 6 ----- 6 files changed, 48 insertions(+), 32 deletions(-) delete mode 160000 backend/cmd/adj diff --git a/backend/cmd/adj b/backend/cmd/adj deleted file mode 160000 index 7a3da6697..000000000 --- a/backend/cmd/adj +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7a3da66976be16f28cab96e9c63f18fb0ab664f7 diff --git a/backend/cmd/config.go b/backend/cmd/config.go index e80b70d52..53d10d3d1 100644 --- a/backend/cmd/config.go +++ b/backend/cmd/config.go @@ -8,8 +8,14 @@ import ( type Adj struct { Branch string } + +type Network struct { + Manual bool +} + type Config struct { Vehicle vehicle.Config Server server.Config + Network Network Adj Adj } diff --git a/backend/cmd/config.toml b/backend/cmd/config.toml index 1bff72f3f..8bd4998ca 100644 --- a/backend/cmd/config.toml +++ b/backend/cmd/config.toml @@ -1,14 +1,23 @@ - -[server.local] +[server.ethernet-view] +address = "127.0.0.1:4040" +static = "./ethernet-view" +[server.ethernet-view.endpoints] +pod_data = "/podDataStructure" +order_data = "/orderStructures" +programable_boards = "/uploadableBoards" +connections = "/backend" +files = "/" +[server.control-station] address = "127.0.0.1:4000" -static = "./static" - -[server.local.endpoints] +static = "./control-station" +[server.control-station.endpoints] pod_data = "/podDataStructure" order_data = "/orderStructures" programable_boards = "/uploadableBoards" connections = "/backend" files = "/" +[network] +manual = false [adj] -branch = "" # Leave blank when using ADJ as a submodule (like this: "") +branch = "sw-bcu" # Leave blank when using ADJ as a submodule (like this: "") diff --git a/backend/cmd/main.go b/backend/cmd/main.go index 1621f43ce..26b36ebc0 100644 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -129,7 +129,7 @@ func main() { dev = devs[*networkDevice] } else { - dev, err = selectDev() + dev, err = selectDev(adj.Info.Addresses, config) if err != nil { trace.Fatal().Err(err).Msg("Error selecting device") } @@ -354,26 +354,40 @@ func createPid(path string) { } } -func selectDev() (pcap.Interface, error) { +func selectDev(adjAddr map[string]string, conf Config) (pcap.Interface, error) { devs, err := pcap.FindAllDevs() if err != nil { return pcap.Interface{}, err } - cyan := color.New(color.FgCyan) + if conf.Network.Manual { + cyan := color.New(color.FgCyan) - cyan.Print("select a device: ") - fmt.Printf("(0-%d)\n", len(devs)-1) - for i, dev := range devs { - displayDev(i, dev) - } + cyan.Print("select a device: ") + fmt.Printf("(0-%d)\n", len(devs)-1) + for i, dev := range devs { + displayDev(i, dev) + } - dev, err := acceptInput(len(devs)) - if err != nil { - return pcap.Interface{}, err - } + dev, err := acceptInput(len(devs)) + if err != nil { + return pcap.Interface{}, err + } - return devs[dev], nil + return devs[dev], nil + } else { + for _, dev := range devs { + for _, addr := range dev.Addresses { + if addr.IP.String() == adjAddr["backend"] { + println(dev.Name) + return dev, nil + } + } + } + + log.Fatal("backend address not found in any device") + return pcap.Interface{}, nil + } } func displayDev(i int, dev pcap.Interface) { diff --git a/backend/internal/adj/boards.go b/backend/internal/adj/boards.go index 2ea61038e..af1d7bdd0 100644 --- a/backend/internal/adj/boards.go +++ b/backend/internal/adj/boards.go @@ -56,12 +56,6 @@ func getBoards(boardsList map[string]string) (map[string]Board, error) { board.Structures = getBoardStructures(board) - // DEBUG - for _, meas := range board.Measurements { - println(meas.SafeRange[0], ", ", meas.SafeRange[1]) - println(meas.WarningRange[0], ", ", meas.WarningRange[1]) - } - boards[boardName] = board } diff --git a/backend/pkg/adj/boards.go b/backend/pkg/adj/boards.go index 2ea61038e..af1d7bdd0 100644 --- a/backend/pkg/adj/boards.go +++ b/backend/pkg/adj/boards.go @@ -56,12 +56,6 @@ func getBoards(boardsList map[string]string) (map[string]Board, error) { board.Structures = getBoardStructures(board) - // DEBUG - for _, meas := range board.Measurements { - println(meas.SafeRange[0], ", ", meas.SafeRange[1]) - println(meas.WarningRange[0], ", ", meas.WarningRange[1]) - } - boards[boardName] = board }