Skip to content

Commit 3d5b7be

Browse files
committed
Packet-sender update, adj.go modif.
1 parent 2e4d5b7 commit 3d5b7be

2 files changed

Lines changed: 124 additions & 3 deletions

File tree

packet-sender/PacketGenerator.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type PacketGenerator struct {
1818
}
1919

2020
func New() PacketGenerator {
21-
adj, err := adj.NewADJ()
21+
adj, err := adj.NewADJ("main", true)
2222
if err != nil {
2323
log.Fatalf("Failed to load ADJ: %v\n", err)
2424
}
@@ -31,7 +31,7 @@ func New() PacketGenerator {
3131
continue
3232
}
3333

34-
id, err := strconv.ParseUint(packet.Id, 10, 16)
34+
id, err := strconv.ParseUint(strconv.Itoa(int(packet.Id)), 10, 16)
3535
if err != nil {
3636
log.Fatalf("data transfer: AddPacket: %s\n", err)
3737
}
@@ -197,7 +197,7 @@ func (pg *PacketGenerator) AddPacket(boardName string, packet adj.Packet) {
197197
return
198198
}
199199

200-
id, err := strconv.ParseUint(packet.Id, 10, 16)
200+
id, err := strconv.ParseUint(strconv.Itoa(int(packet.Id)), 10, 16)
201201
if err != nil {
202202
log.Fatalf("data transfer: AddPacket: %s\n", err)
203203
}

packet-sender/testadj.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import os
2+
import json
3+
4+
5+
def validate_json_structure(data):
6+
errors = []
7+
8+
if "board_id" in data:
9+
if not isinstance(data["board_id"], int):
10+
errors.append(f"'board_id' debe ser un entero, pero se encontró: {type(data['board_id']).__name__}.")
11+
12+
if "board_ip" in data:
13+
if not isinstance(data["board_ip"], str):
14+
errors.append(f"'board_ip' debe ser una cadena, pero se encontró: {type(data['board_ip']).__name__}.")
15+
16+
17+
if "measurements" in data:
18+
if not isinstance(data["measurements"], list):
19+
errors.append("La clave 'measurements' debe ser una lista.")
20+
else:
21+
for measurement in data["measurements"]:
22+
if isinstance(measurement, dict):
23+
required_keys = ["id", "name", "type", "podUnits", "displayUnits"]
24+
for key in required_keys:
25+
if key not in measurement:
26+
errors.append(f"Falta la clave '{key}' en un objeto de 'measurements'.")
27+
if "id" in measurement and not isinstance(measurement["id"], str):
28+
errors.append(f"El 'id' debe ser una cadena en: {measurement}")
29+
if "name" in measurement and not isinstance(measurement["name"], str):
30+
errors.append(f"El 'name' debe ser una cadena en: {measurement}")
31+
if "type" in measurement and not isinstance(measurement["type"], str):
32+
errors.append(f"El 'type' debe ser una cadena en: {measurement}")
33+
if "safeRange" in measurement and not isinstance(measurement.get("safeRange", []), list):
34+
errors.append(f"'safeRange' debe ser una lista en: {measurement}")
35+
if "warningRange" in measurement and not isinstance(measurement.get("warningRange", []), list):
36+
errors.append(f"'warningRange' debe ser una lista en: {measurement}")
37+
if "displayUnits" in measurement and not isinstance(measurement["displayUnits"], str):
38+
errors.append(f"El 'podUnits' debe ser una cadena en: {measurement}")
39+
if "podUnits" in measurement and not isinstance(measurement["podUnits"], str):
40+
errors.append(f"El 'podUnits' debe ser una cadena en: {measurement}") #esto se puede quitar (json 516)
41+
elif not isinstance(measurement, str):
42+
errors.append("Cada elemento en 'measurements' debe ser un objeto o una cadena (nombre de archivo).")
43+
44+
45+
if "packets" in data:
46+
if not isinstance(data["packets"], list):
47+
errors.append("La clave 'packets' debe ser una lista.")
48+
else:
49+
for packet in data["packets"]:
50+
if isinstance(packet, dict):
51+
required_keys = ["id", "name", "type","variable"]
52+
for key in required_keys:
53+
if key not in packet:
54+
errors.append(f"Falta la clave '{key}' en un objeto de 'packets'.")
55+
if "id" in packet and not isinstance(packet["id"], str):
56+
errors.append(f"El 'id' debe ser una cadena en: {packet}")
57+
if "name" in packet and not isinstance(packet["name"], str):
58+
errors.append(f"El 'name' debe ser una cadena en: {packet}")
59+
if "type" in packet and not isinstance(packet["type"], str):
60+
errors.append(f"El 'type' debe ser una cadena en: {packet}")
61+
if "variables" in packet:
62+
if not isinstance(packet["variables"], list):
63+
errors.append(f"'variables' debe ser una lista en: {packet}")
64+
else:
65+
for variable in packet["variables"]:
66+
if not isinstance(variable, dict):
67+
errors.append(f"Cada elemento en 'variables' debe ser un objeto en: {packet}")
68+
if "name" not in variable:
69+
errors.append(f"Falta la clave 'name' en un objeto de 'variables' en: {packet}")
70+
elif not isinstance(packet, str):
71+
errors.append("Cada elemento en 'packets' debe ser un objeto o una cadena (nombre de archivo).")
72+
73+
return errors
74+
75+
76+
77+
def validate_json_folder(folder_path):
78+
boards_file_path = os.path.join(folder_path, "boards.json")
79+
80+
try:
81+
with open(boards_file_path, 'r') as boards_file:
82+
boards_data = json.load(boards_file)
83+
boards = boards_data.get("boards", {})
84+
85+
86+
board_keys = list(boards.keys())
87+
duplicate_keys = [key for key in board_keys if board_keys.count(key) > 1]
88+
89+
if duplicate_keys:
90+
print(f"Error: El archivo boards.json contiene claves duplicadas: {', '.join(duplicate_keys)}")
91+
return
92+
93+
except json.JSONDecodeError as e:
94+
print(f"Error al decodificar JSON en {boards_file_path}: {e}")
95+
return
96+
except Exception as e:
97+
print(f"Error al procesar el archivo {boards_file_path}: {e}")
98+
return
99+
100+
101+
for board_name, board_file_path in boards.items():
102+
full_path = os.path.join(folder_path, board_file_path)
103+
try:
104+
with open(full_path, 'r') as board_file:
105+
data = json.load(board_file)
106+
errors = validate_json_structure(data)
107+
if errors:
108+
print(f"Errores encontrados en {full_path} para la placa '{board_name}':")
109+
for error in errors:
110+
print(f"- {error}")
111+
112+
except json.JSONDecodeError as e:
113+
print(f"Error al decodificar JSON en {full_path}: {e}")
114+
except Exception as e:
115+
print(f"Error al procesar el archivo {full_path}: {e}")
116+
117+
118+
if os.path.exists('./adj/') == False:
119+
print("La carpeta ./adj/ no existe")
120+
if __name__ == "__main__":
121+
validate_json_folder("./adj/")

0 commit comments

Comments
 (0)