Skip to content

Commit 146116c

Browse files
committed
adj boards module
1 parent bd783a0 commit 146116c

1 file changed

Lines changed: 168 additions & 0 deletions

File tree

backend/internal/adj/boards.go

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
package adj
2+
3+
import (
4+
"encoding/json"
5+
"os"
6+
"path"
7+
)
8+
9+
func getBoards(boardsList map[string]string) (map[string]Board, error) {
10+
boards := make(map[string]Board, len(boardsList))
11+
for boardName, boardPath := range boardsList {
12+
fullPath := path.Join(RepoPath, boardPath)
13+
boardRaw, err := os.ReadFile(fullPath)
14+
if err != nil {
15+
return nil, err
16+
}
17+
18+
var boardJSON BoardJSON
19+
if err = json.Unmarshal(boardRaw, &boardJSON); err != nil {
20+
return nil, err
21+
}
22+
23+
measPathsFr := make([]string, 0)
24+
for _, measPath := range boardJSON.MeasurementsPaths {
25+
measPathsFr = append(measPathsFr, path.Join(RepoPath, "boards", boardName, measPath))
26+
}
27+
boardJSON.MeasurementsPaths = measPathsFr
28+
29+
packetPathsFr := make([]string, 0)
30+
for _, packetPath := range boardJSON.PacketsPaths {
31+
packetPathsFr = append(packetPathsFr, path.Join(RepoPath, "boards", boardName, packetPath))
32+
}
33+
boardJSON.PacketsPaths = packetPathsFr
34+
35+
board := Board{
36+
Name: boardName,
37+
IP: boardJSON.IP,
38+
}
39+
board.Packets, err = getBoardPackets(boardJSON.PacketsPaths)
40+
if err != nil {
41+
return nil, err
42+
}
43+
44+
board.Measurements, err = getBoardMeasurements(boardJSON.MeasurementsPaths)
45+
if err != nil {
46+
return nil, err
47+
}
48+
board.LookUpMeasurements = make(map[string]Measurement, len(board.Measurements))
49+
50+
for _, measurement := range board.Measurements {
51+
board.LookUpMeasurements[measurement.Id] = measurement
52+
}
53+
board.Structures = getBoardStructures(board)
54+
55+
boards[boardName] = board
56+
}
57+
58+
return boards, nil
59+
}
60+
61+
func getBoardPackets(packetsPaths []string) ([]Packet, error) {
62+
packets := make([]Packet, 0)
63+
for _, packetPath := range packetsPaths {
64+
if _, err := os.Stat(packetPath); os.IsNotExist(err) {
65+
continue
66+
}
67+
68+
packetRaw, err := os.ReadFile(packetPath)
69+
if err != nil {
70+
return nil, err
71+
}
72+
73+
// Magic happens here
74+
type PacketJSON struct {
75+
Packet []Packet `json:"packets"`
76+
}
77+
78+
packetsJSON := PacketJSON{}
79+
if err = json.Unmarshal(packetRaw, &packetsJSON); err != nil {
80+
return nil, err
81+
}
82+
for _, packetTMP := range packetsJSON.Packet {
83+
packets = append(packets, packetTMP)
84+
}
85+
}
86+
87+
return packets, nil
88+
}
89+
90+
func getBoardMeasurements(measurementsPaths []string) ([]Measurement, error) {
91+
measurementsTMP := make([]MeasurementJSON, 0)
92+
93+
for _, measurementPath := range measurementsPaths {
94+
if _, err := os.Stat(measurementPath); os.IsNotExist(err) {
95+
continue
96+
}
97+
98+
measurementRaw, err := os.ReadFile(measurementPath)
99+
if err != nil {
100+
return nil, err
101+
}
102+
103+
// Absolutely doing tricks on it AGAIN - @msanlli
104+
type MeasurementsJSON struct {
105+
Measurements []MeasurementJSON `json:"measurements"`
106+
}
107+
108+
measurementsJSON := MeasurementsJSON{}
109+
if err = json.Unmarshal(measurementRaw, &measurementsJSON); err != nil {
110+
return nil, err
111+
}
112+
for _, measurementTMP := range measurementsJSON.Measurements {
113+
measurementsTMP = append(measurementsTMP, measurementTMP)
114+
}
115+
}
116+
117+
measurements, err := getRanges(measurementsTMP)
118+
if err != nil {
119+
return nil, err
120+
}
121+
122+
return measurements, nil
123+
}
124+
125+
func getRanges(measurementsTMP []MeasurementJSON) ([]Measurement, error) {
126+
return nil, nil
127+
}
128+
129+
func getBoardIds(boards map[string]string) (map[string]uint16, error) {
130+
boardIds := make(map[string]uint16, len(boards))
131+
for boardName, boardPath := range boards {
132+
fullPath := path.Join(RepoPath, boardPath)
133+
boardRaw, err := os.ReadFile(fullPath)
134+
if err != nil {
135+
return nil, err
136+
}
137+
138+
var boardJSON BoardJSON
139+
if err = json.Unmarshal(boardRaw, &boardJSON); err != nil {
140+
return nil, err
141+
}
142+
143+
boardIds[boardName] = boardJSON.ID
144+
}
145+
146+
return boardIds, nil
147+
}
148+
149+
func getBoardStructures(board Board) []Structure {
150+
structures := make([]Structure, len(board.Packets))
151+
for i, packet := range board.Packets {
152+
structures[i] = Structure{
153+
Packet: packet,
154+
Measurements: board.Measurements,
155+
}
156+
}
157+
158+
return structures
159+
}
160+
161+
func getAddresses(boards map[string]Board) (map[string]string, error) {
162+
addresses := make(map[string]string, len(boards))
163+
for boardName, board := range boards {
164+
addresses[boardName] = board.IP
165+
}
166+
167+
return addresses, nil
168+
}

0 commit comments

Comments
 (0)