From 8c496f96571ccbf2e27cf921c75b102f34bcf667 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Mon, 23 Dec 2024 02:58:40 +0100 Subject: [PATCH 1/8] Por si lo pierdo --- Inc/Packet_generation/Generator.py | 88 ++++++++++++++++++++++++++++++ Inc/Packet_generation/JSON_ADE | 1 + Inc/Packet_generation/Template.hpp | 21 +++++++ 3 files changed, 110 insertions(+) create mode 100644 Inc/Packet_generation/Generator.py create mode 160000 Inc/Packet_generation/JSON_ADE create mode 100644 Inc/Packet_generation/Template.hpp diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py new file mode 100644 index 000000000..39b454bd8 --- /dev/null +++ b/Inc/Packet_generation/Generator.py @@ -0,0 +1,88 @@ +import json +def MeasurementSearch(measurements:dict, variable:str): + for measurment in measurements["measurements"]: + if measurment["id"] == variable: + return measurment + return None + +def MeasurementFileSearch(packet:str,measurements:dict): + packet_name = packet.split('_')[0] + for measurement in measurements: + measurement_name = measurement.split('_')[0] + if packet_name[0] == measurement_name[0]: + return measurement + else: + return measurements[0] +class BoardDescription: + def __init__(self,name:str,board:dict): + self.name = name + self.id = board["board_id"] + self.ip = board["board_ip"] + i = 0 + self.packets = [] + for packets in board["packets"]: + measurement = MeasurementFileSearch(packets,board["measurements"]) + with open("Inc/Packet_generation/JSON_ADE/boards/" + name+"/" + board["packets"][i]) as f: + p= json.load(f) + with open("Inc/Packet_generation/JSON_ADE/boards/" + name + "/" + measurement) as f: + m = json.load(f) + i += 1 + for packet in p["packets"]: + print(packet) + print("\n") + self.packets.append(PacketDescription(packet,m)) + +class PacketDescription: + def __init__(self, packet:dict,measurements:dict): + self.id =packet["id"] + self.name = packet["name"] + self.type = packet["type"] + self.variables = [] + self.measurements = [] + for variable in packet["variables"]: + self.variables.append([variable["name"]]) + self.measurements.append(MeasurmentsDescription(measurements,variable["name"])) + + +class MeasurmentsDescription: + def __init__(self,measurements:dict, variable:str): + self.id = variable + measurement = MeasurementSearch(measurements,variable) + if measurement is None: + raise Exception("Measurement not found") + else: + self.name = measurement["name"] + self.type = measurement["type"] + + + +with open("Inc/Packet_generation/JSON_ADE/boards.json") as f: + boards = json.load(f) + +with open("Inc/Packet_generation/JSON_ADE/boards/LCU/LCU.json") as f: + LCU1 = json.load(f) +LCU = BoardDescription("LCU",LCU1) + +print(LCU.name) +print(LCU.packets[0].name) +i=0 +for variable in LCU.packets[0].variables: + print(variable) + print("\n") + print(LCU.packets[0].measurements[i].type) + i+=1 + +#for board in boards["boards"]: + #with open("Inc/Packet_generation/JSON_ADE/" + (boards["boards"][board])) as f: + #b = json.load(f) + #board_instance = BoardDescription(board, b) + #globals()[board] = board_instance + + + + + + + + + \ No newline at end of file diff --git a/Inc/Packet_generation/JSON_ADE b/Inc/Packet_generation/JSON_ADE new file mode 160000 index 000000000..5857e0f8d --- /dev/null +++ b/Inc/Packet_generation/JSON_ADE @@ -0,0 +1 @@ +Subproject commit 5857e0f8d85aa9b5953e3b84d7cc39b1c9a96858 diff --git a/Inc/Packet_generation/Template.hpp b/Inc/Packet_generation/Template.hpp new file mode 100644 index 000000000..9cf3fe773 --- /dev/null +++ b/Inc/Packet_generation/Template.hpp @@ -0,0 +1,21 @@ +#include "ST-LIB.hpp" + +class DataPacket { + + private: + constexpr static size_t size =%size%; + uint32_t id{0}; + public: + StackPacket* packet; + std::array packets; + + DataPacket(%cosas por referencia%){ + StackPacket* packet = new StackPacket(%cosas por referencia%); + packets[id] = packet; + id++; + } + + + + +}; \ No newline at end of file From 507f30f33ecd49fede7f822bdfc6c99e08a9264f Mon Sep 17 00:00:00 2001 From: Catonplas Date: Tue, 24 Dec 2024 19:53:52 +0100 Subject: [PATCH 2/8] Finishes description data classes for python, now goes the generation --- Inc/Packet_generation/Generator.py | 88 +++++++++++---------- Inc/Packet_generation/tempCodeRunnerFile.py | 1 + 2 files changed, 49 insertions(+), 40 deletions(-) create mode 100644 Inc/Packet_generation/tempCodeRunnerFile.py diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py index 39b454bd8..2432f0fe3 100644 --- a/Inc/Packet_generation/Generator.py +++ b/Inc/Packet_generation/Generator.py @@ -1,37 +1,32 @@ import json -def MeasurementSearch(measurements:dict, variable:str): - for measurment in measurements["measurements"]: - if measurment["id"] == variable: - return measurment - return None - -def MeasurementFileSearch(packet:str,measurements:dict): - packet_name = packet.split('_')[0] - for measurement in measurements: - measurement_name = measurement.split('_')[0] - if packet_name[0] == measurement_name[0]: - return measurement - else: - return measurements[0] -class BoardDescription: +import re +class BoardDescription: def __init__(self,name:str,board:dict): self.name = name self.id = board["board_id"] self.ip = board["board_ip"] i = 0 - self.packets = [] + self.packets = {} for packets in board["packets"]: - measurement = MeasurementFileSearch(packets,board["measurements"]) + packets_name = re.split(r'_|\.', packets)[0] + self.packets[packets_name] = [] + measurement = self._MeasurementFileSearch(packets,board["measurements"]) with open("Inc/Packet_generation/JSON_ADE/boards/" + name+"/" + board["packets"][i]) as f: p= json.load(f) with open("Inc/Packet_generation/JSON_ADE/boards/" + name + "/" + measurement) as f: m = json.load(f) i += 1 for packet in p["packets"]: - print(packet) - print("\n") - self.packets.append(PacketDescription(packet,m)) - + self.packets[packets_name].append(PacketDescription(packet,m)) + + def _MeasurementFileSearch(self,packet:str,measurements:dict): + packet_name = packet.split('_')[0] + for measurement in measurements: + measurement_name = measurement.split('_')[0] + if packet_name[0] == measurement_name[0]: + return measurement + else: + return measurements[0] class PacketDescription: def __init__(self, packet:dict,measurements:dict): self.id =packet["id"] @@ -47,37 +42,50 @@ def __init__(self, packet:dict,measurements:dict): class MeasurmentsDescription: def __init__(self,measurements:dict, variable:str): self.id = variable - measurement = MeasurementSearch(measurements,variable) + measurement = self._MeasurementSearch(measurements,variable) if measurement is None: raise Exception("Measurement not found") else: self.name = measurement["name"] self.type = measurement["type"] + + def _MeasurementSearch(self,measurements:dict, variable:str): + for measurment in measurements["measurements"]: + if measurment["id"] == variable: + return measurment + return None with open("Inc/Packet_generation/JSON_ADE/boards.json") as f: boards = json.load(f) -with open("Inc/Packet_generation/JSON_ADE/boards/LCU/LCU.json") as f: - LCU1 = json.load(f) -LCU = BoardDescription("LCU",LCU1) - -print(LCU.name) -print(LCU.packets[0].name) -i=0 -for variable in LCU.packets[0].variables: - print(variable) +#with open("Inc/Packet_generation/JSON_ADE/boards/LCU/LCU.json") as f: + #LCU1 = json.load(f) +#LCU = BoardDescription("LCU",LCU1) + +#print(LCU.name) +#print(LCU.packets[0].name) +#i=0 +#for variable in LCU.packets[0].variables: + #print(variable) + #print("\n") + #print(LCU.packets[0].measurements[i].type) + #i+=1 + +for board in boards["boards"]: + with open("Inc/Packet_generation/JSON_ADE/" + (boards["boards"][board])) as f: + b = json.load(f) + board_instance = BoardDescription(board, b) + globals()[board] = board_instance + +for packet in OBCCU.packets["control"]: + print(packet.name) + for variable in packet.variables: + print(variable) + for measurement in packet.measurements: + print(measurement.type) print("\n") - print(LCU.packets[0].measurements[i].type) - i+=1 - -#for board in boards["boards"]: - #with open("Inc/Packet_generation/JSON_ADE/" + (boards["boards"][board])) as f: - #b = json.load(f) - #board_instance = BoardDescription(board, b) - #globals()[board] = board_instance - diff --git a/Inc/Packet_generation/tempCodeRunnerFile.py b/Inc/Packet_generation/tempCodeRunnerFile.py new file mode 100644 index 000000000..5acdeecf5 --- /dev/null +++ b/Inc/Packet_generation/tempCodeRunnerFile.py @@ -0,0 +1 @@ +_MeasurementSearch \ No newline at end of file From af5494d200b42a5356f60d500b24e1f4c89652e7 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Thu, 26 Dec 2024 20:45:15 +0100 Subject: [PATCH 3/8] Nearly done --- Inc/Packet_generation/DataPackets.hpp | 86 +++++++++++ Inc/Packet_generation/Generator.py | 159 ++++++++++++++++---- Inc/Packet_generation/Template.hpp | 22 ++- Inc/Packet_generation/tempCodeRunnerFile.py | 1 - 4 files changed, 222 insertions(+), 46 deletions(-) create mode 100644 Inc/Packet_generation/DataPackets.hpp delete mode 100644 Inc/Packet_generation/tempCodeRunnerFile.py diff --git a/Inc/Packet_generation/DataPackets.hpp b/Inc/Packet_generation/DataPackets.hpp new file mode 100644 index 000000000..1dec91050 --- /dev/null +++ b/Inc/Packet_generation/DataPackets.hpp @@ -0,0 +1,86 @@ +#include "ST-LIB.hpp" +class DataPacket{ + + + + private: + constexpr static size_t size =19; + uint32_t id{0}; + public: + std::array packets; + StackPacket* battery_1; + StackPacket* battery_2; + StackPacket* battery_3; + StackPacket* battery_4; + StackPacket* battery_5; + StackPacket* battery_6; + StackPacket* battery_7; + StackPacket* battery_8; + StackPacket* battery_9; + StackPacket* battery_10; + StackPacket* Fault; + StackPacket* Total Voltage; + StackPacket* IMD; + StackPacket* Measurements; + StackPacket* OBCPU Measurements; + StackPacket* Contactors State; + StackPacket* Output Voltage; + + + DataPacket(uint8_t idpacket910,float32 battery1_SOC,float32 battery1_cell1,float32 battery1_cell2,float32 battery1_cell3,float32 battery1_cell4,float32 battery1_cell5,float32 battery1_cell6,float32 battery1_minimum_cell,float32 battery1_maximum_cell,float32 battery1_temperature1,float32 battery1_temperature2,bool battery1_is_balancing,float32 battery1_total_voltage,uint8_t idpacket911,float32 battery2_SOC,float32 battery2_cell1,float32 battery2_cell2,float32 battery2_cell3,float32 battery2_cell4,float32 battery2_cell5,float32 battery2_cell6,float32 battery2_minimum_cell,float32 battery2_maximum_cell,float32 battery2_temperature1,float32 battery2_temperature2,bool battery2_is_balancing,float32 battery2_total_voltage,uint8_t idpacket912,float32 battery3_SOC,float32 battery3_cell1,float32 battery3_cell2,float32 battery3_cell3,float32 battery3_cell4,float32 battery3_cell5,float32 battery3_cell6,float32 battery3_minimum_cell,float32 battery3_maximum_cell,float32 battery3_temperature1,float32 battery3_temperature2,bool battery3_is_balancing,float32 battery3_total_voltage,uint8_t idpacket913,float32 battery4_SOC,float32 battery4_cell1,float32 battery4_cell2,float32 battery4_cell3,float32 battery4_cell4,float32 battery4_cell5,float32 battery4_cell6,float32 battery4_minimum_cell,float32 battery4_maximum_cell,float32 battery4_temperature1,float32 battery4_temperature2,bool battery4_is_balancing,float32 battery4_total_voltage,uint8_t idpacket914,float32 battery5_SOC,float32 battery5_cell1,float32 battery5_cell2,float32 battery5_cell3,float32 battery5_cell4,float32 battery5_cell5,float32 battery5_cell6,float32 battery5_minimum_cell,float32 battery5_maximum_cell,float32 battery5_temperature1,float32 battery5_temperature2,bool battery5_is_balancing,float32 battery5_total_voltage,uint8_t idpacket915,float32 battery6_SOC,float32 battery6_cell1,float32 battery6_cell2,float32 battery6_cell3,float32 battery6_cell4,float32 battery6_cell5,float32 battery6_cell6,float32 battery6_minimum_cell,float32 battery6_maximum_cell,float32 battery6_temperature1,float32 battery6_temperature2,bool battery6_is_balancing,float32 battery6_total_voltage,uint8_t idpacket916,float32 battery7_SOC,float32 battery7_cell1,float32 battery7_cell2,float32 battery7_cell3,float32 battery7_cell4,float32 battery7_cell5,float32 battery7_cell6,float32 battery7_minimum_cell,float32 battery7_maximum_cell,float32 battery7_temperature1,float32 battery7_temperature2,bool battery7_is_balancing,float32 battery7_total_voltage,uint8_t idpacket917,float32 battery8_SOC,float32 battery8_cell1,float32 battery8_cell2,float32 battery8_cell3,float32 battery8_cell4,float32 battery8_cell5,float32 battery8_cell6,float32 battery8_minimum_cell,float32 battery8_maximum_cell,float32 battery8_temperature1,float32 battery8_temperature2,bool battery8_is_balancing,float32 battery8_total_voltage,uint8_t idpacket918,float32 battery9_SOC,float32 battery9_cell1,float32 battery9_cell2,float32 battery9_cell3,float32 battery9_cell4,float32 battery9_cell5,float32 battery9_cell6,float32 battery9_minimum_cell,float32 battery9_maximum_cell,float32 battery9_temperature1,float32 battery9_temperature2,bool battery9_is_balancing,float32 battery9_total_voltage,uint8_t idpacket919,float32 battery10_SOC,float32 battery10_cell1,float32 battery10_cell2,float32 battery10_cell3,float32 battery10_cell4,float32 battery10_cell5,float32 battery10_cell6,float32 battery10_minimum_cell,float32 battery10_maximum_cell,float32 battery10_temperature1,float32 battery10_temperature2,bool battery10_is_balancing,float32 battery10_total_voltage,uint8_t idpacket0,uint8_t idpacket921,float32 total_voltage_high,uint8_t idpacket922,uint8_t imd_status,float32 freq_imd,float32 duty_imd,uint8_t idpacket924,float32 battery_current,uint8_t idpacket925,float32 obcpu_input_current,float32 obcpu_input_voltage,float32 obcpu_output_current,float32 obcpu_output_voltage,uint8_t idpacket926,uint8_t contactors_state,uint8_t plug_state,uint8_t board_state,uint8_t idpacket981,float32 output_voltage_lpus,bool driving_mosfets) +{ + + battery_1 = new StackPacket(&idpacket910,&battery1_SOC,&battery1_cell1,&battery1_cell2,&battery1_cell3,&battery1_cell4,&battery1_cell5,&battery1_cell6,&battery1_minimum_cell,&battery1_maximum_cell,&battery1_temperature1,&battery1_temperature2,&battery1_is_balancing,&battery1_total_voltage); + packets[id] = battery_1; + id++; + battery_2 = new StackPacket(&idpacket911,&battery2_SOC,&battery2_cell1,&battery2_cell2,&battery2_cell3,&battery2_cell4,&battery2_cell5,&battery2_cell6,&battery2_minimum_cell,&battery2_maximum_cell,&battery2_temperature1,&battery2_temperature2,&battery2_is_balancing,&battery2_total_voltage); + packets[id] = battery_2; + id++; + battery_3 = new StackPacket(&idpacket912,&battery3_SOC,&battery3_cell1,&battery3_cell2,&battery3_cell3,&battery3_cell4,&battery3_cell5,&battery3_cell6,&battery3_minimum_cell,&battery3_maximum_cell,&battery3_temperature1,&battery3_temperature2,&battery3_is_balancing,&battery3_total_voltage); + packets[id] = battery_3; + id++; + battery_4 = new StackPacket(&idpacket913,&battery4_SOC,&battery4_cell1,&battery4_cell2,&battery4_cell3,&battery4_cell4,&battery4_cell5,&battery4_cell6,&battery4_minimum_cell,&battery4_maximum_cell,&battery4_temperature1,&battery4_temperature2,&battery4_is_balancing,&battery4_total_voltage); + packets[id] = battery_4; + id++; + battery_5 = new StackPacket(&idpacket914,&battery5_SOC,&battery5_cell1,&battery5_cell2,&battery5_cell3,&battery5_cell4,&battery5_cell5,&battery5_cell6,&battery5_minimum_cell,&battery5_maximum_cell,&battery5_temperature1,&battery5_temperature2,&battery5_is_balancing,&battery5_total_voltage); + packets[id] = battery_5; + id++; + battery_6 = new StackPacket(&idpacket915,&battery6_SOC,&battery6_cell1,&battery6_cell2,&battery6_cell3,&battery6_cell4,&battery6_cell5,&battery6_cell6,&battery6_minimum_cell,&battery6_maximum_cell,&battery6_temperature1,&battery6_temperature2,&battery6_is_balancing,&battery6_total_voltage); + packets[id] = battery_6; + id++; + battery_7 = new StackPacket(&idpacket916,&battery7_SOC,&battery7_cell1,&battery7_cell2,&battery7_cell3,&battery7_cell4,&battery7_cell5,&battery7_cell6,&battery7_minimum_cell,&battery7_maximum_cell,&battery7_temperature1,&battery7_temperature2,&battery7_is_balancing,&battery7_total_voltage); + packets[id] = battery_7; + id++; + battery_8 = new StackPacket(&idpacket917,&battery8_SOC,&battery8_cell1,&battery8_cell2,&battery8_cell3,&battery8_cell4,&battery8_cell5,&battery8_cell6,&battery8_minimum_cell,&battery8_maximum_cell,&battery8_temperature1,&battery8_temperature2,&battery8_is_balancing,&battery8_total_voltage); + packets[id] = battery_8; + id++; + battery_9 = new StackPacket(&idpacket918,&battery9_SOC,&battery9_cell1,&battery9_cell2,&battery9_cell3,&battery9_cell4,&battery9_cell5,&battery9_cell6,&battery9_minimum_cell,&battery9_maximum_cell,&battery9_temperature1,&battery9_temperature2,&battery9_is_balancing,&battery9_total_voltage); + packets[id] = battery_9; + id++; + battery_10 = new StackPacket(&idpacket919,&battery10_SOC,&battery10_cell1,&battery10_cell2,&battery10_cell3,&battery10_cell4,&battery10_cell5,&battery10_cell6,&battery10_minimum_cell,&battery10_maximum_cell,&battery10_temperature1,&battery10_temperature2,&battery10_is_balancing,&battery10_total_voltage); + packets[id] = battery_10; + id++; + Fault = new StackPacket(&idpacket0); + packets[id] = Fault; + id++; + Total Voltage = new StackPacket(&idpacket921,&total_voltage_high); + packets[id] = Total Voltage; + id++; + IMD = new StackPacket(&idpacket922,&imd_status,&freq_imd,&duty_imd); + packets[id] = IMD; + id++; + Measurements = new StackPacket(&idpacket924,&battery_current); + packets[id] = Measurements; + id++; + OBCPU Measurements = new StackPacket(&idpacket925,&obcpu_input_current,&obcpu_input_voltage,&obcpu_output_current,&obcpu_output_voltage); + packets[id] = OBCPU Measurements; + id++; + Contactors State = new StackPacket(&idpacket926,&contactors_state,&plug_state,&board_state); + packets[id] = Contactors State; + id++; + Output Voltage = new StackPacket(&idpacket981,&output_voltage_lpus,&driving_mosfets); + packets[id] = Output Voltage; + id++; + +} +}; \ No newline at end of file diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py index 2432f0fe3..345a2896f 100644 --- a/Inc/Packet_generation/Generator.py +++ b/Inc/Packet_generation/Generator.py @@ -1,10 +1,16 @@ import json import re + +packet_name= " StackPacket* %name%;\n" +packet_struct = " %name% = new StackPacket(%packet_data%);\n packets[id] = %name%;\n id++;" +enum_template = "enum class %name%{ \n %values% \n};" + class BoardDescription: def __init__(self,name:str,board:dict): self.name = name self.id = board["board_id"] self.ip = board["board_ip"] + self.size =0 i = 0 self.packets = {} for packets in board["packets"]: @@ -18,8 +24,9 @@ def __init__(self,name:str,board:dict): i += 1 for packet in p["packets"]: self.packets[packets_name].append(PacketDescription(packet,m)) - - def _MeasurementFileSearch(self,packet:str,measurements:dict): + self.size = self.size +1 + @staticmethod + def _MeasurementFileSearch(packet:str,measurements:dict): packet_name = packet.split('_')[0] for measurement in measurements: measurement_name = measurement.split('_')[0] @@ -34,8 +41,9 @@ def __init__(self, packet:dict,measurements:dict): self.type = packet["type"] self.variables = [] self.measurements = [] + i=0 for variable in packet["variables"]: - self.variables.append([variable["name"]]) + self.variables.append(variable["name"]) self.measurements.append(MeasurmentsDescription(measurements,variable["name"])) @@ -47,47 +55,132 @@ def __init__(self,measurements:dict, variable:str): raise Exception("Measurement not found") else: self.name = measurement["name"] - self.type = measurement["type"] - - def _MeasurementSearch(self,measurements:dict, variable:str): + self.type = self._unsigned_int_correction(measurement["type"]) + if self.type == "enum": + self.enum = self._create_enum(measurement) + self.type = measurement["id"] + + @staticmethod + def _MeasurementSearch(measurements:dict, variable:str): for measurment in measurements["measurements"]: if measurment["id"] == variable: return measurment return None + + @staticmethod + def _create_enum(measurement: dict): + if "enumValues" not in measurement: + raise ValueError("Measurement does not contain 'enumValues'") + + enum = enum_template.replace("%name%", measurement["id"]) + values = "" + for value in measurement["enumValues"]: + values += value + ",\n" + if values.endswith(",\n"): + values = values[:-2] + values += "\n" + enum = enum.replace("%values%", values.strip()) + return enum + + @staticmethod + def _unsigned_int_correction(type:str): + aux_type = type[:4] + if aux_type == "uint": + type += "_t" + return type +def GenerateEnum(board:BoardDescription): + Enums = [] + for packet in board.packets: + if packet != "orders": + for packet_instance in board.packets[packet]: + for measurement in packet_instance.measurements: + if hasattr(measurement, "enum"): + Enums.append(measurement.enum) + enums_data = "\n".join(Enums) + return enums_data + +def GenerateData(board:BoardDescription): + Data =[] + for packet in board.packets: + if packet != "orders": + for packet_instance in board.packets[packet]: + data = "" + i=0 + data += "uint8_t idpacket" + str(packet_instance.id) + "," + for variable in packet_instance.variables: + data += (str(packet_instance.measurements[i].type)+" "+ str(variable) +",") + i += 1 + Data.append(data) + + if Data and Data[-1].endswith(","): + Data[-1] = Data[-1][:-1] + total_data ="".join(Data) + return total_data + +def GenerateDataNames(board:BoardDescription,packet_name:str): + Names =[] + for packet in board.packets: + if packet != "orders": + for packet_instance in board.packets[packet]: + data = "" + data += packet_name.replace("%name%",packet_instance.name) + Names.append(data) + names_data = "".join(Names) + return names_data + + +def GenerateDataPackets(board:BoardDescription,packet_struct:str): + Packets =[] + for packet in board.packets: + if packet != "orders": + for packet_instance in board.packets[packet]: + data = "" + data +="&idpacket"+str(packet_instance.id)+"," + + for variable in packet_instance.variables: + data += ("&"+str(variable) +",") + if data.endswith(","): + data = data[:-1] + aux = packet_struct + aux = aux.replace("%name%",packet_instance.name) + Packets.append(aux.replace("%packet_data%", data)) + + packets_data = "\n".join(Packets) + return packets_data -with open("Inc/Packet_generation/JSON_ADE/boards.json") as f: - boards = json.load(f) +def Generate_DataPackets_hpp(board_input:str): + with open("Inc/Packet_generation/JSON_ADE/boards.json") as f: + boards = json.load(f) -#with open("Inc/Packet_generation/JSON_ADE/boards/LCU/LCU.json") as f: - #LCU1 = json.load(f) -#LCU = BoardDescription("LCU",LCU1) + for board in boards["boards"]: + with open("Inc/Packet_generation/JSON_ADE/" + (boards["boards"][board])) as f: + b = json.load(f) + board_instance = BoardDescription(board, b) + globals()[board] = board_instance -#print(LCU.name) -#print(LCU.packets[0].name) -#i=0 -#for variable in LCU.packets[0].variables: - #print(variable) - #print("\n") - #print(LCU.packets[0].measurements[i].type) - #i+=1 + board_instance = globals()[board_input] + + with open("Inc/Packet_generation/Template.hpp","r") as Input: + data= Input.read() -for board in boards["boards"]: - with open("Inc/Packet_generation/JSON_ADE/" + (boards["boards"][board])) as f: - b = json.load(f) - board_instance = BoardDescription(board, b) - globals()[board] = board_instance + data = data.replace("%enums%", GenerateEnum(board_instance)) + data = data.replace("%packetnames%", GenerateDataNames(board_instance,packet_name)) + data = data.replace("%size%", str(board_instance.size)) + data = data.replace("%data%", GenerateData(board_instance)) + data = data.replace("%packets%", GenerateDataPackets(board_instance,packet_struct)) -for packet in OBCCU.packets["control"]: - print(packet.name) - for variable in packet.variables: - print(variable) - for measurement in packet.measurements: - print(measurement.type) - print("\n") - - + with open("Inc/Packet_generation/DataPackets.hpp","w") as Output: + Output.write(data) + +board = input("Enter board name: ") +while board not in ["VCU","OBCCU","LCU"]: + print("Board not found, only VCU, OBCCU and LCU are available") + board = input("Enter board name: ") +Generate_DataPackets_hpp(board) + + diff --git a/Inc/Packet_generation/Template.hpp b/Inc/Packet_generation/Template.hpp index 9cf3fe773..c2df65410 100644 --- a/Inc/Packet_generation/Template.hpp +++ b/Inc/Packet_generation/Template.hpp @@ -1,21 +1,19 @@ #include "ST-LIB.hpp" - -class DataPacket { +class DataPacket{ + +%enums% private: constexpr static size_t size =%size%; uint32_t id{0}; public: - StackPacket* packet; - std::array packets; - - DataPacket(%cosas por referencia%){ - StackPacket* packet = new StackPacket(%cosas por referencia%); - packets[id] = packet; - id++; - } - - + std::array packets; +%packetnames% + + DataPacket(%data%) +{ +%packets% +} }; \ No newline at end of file diff --git a/Inc/Packet_generation/tempCodeRunnerFile.py b/Inc/Packet_generation/tempCodeRunnerFile.py deleted file mode 100644 index 5acdeecf5..000000000 --- a/Inc/Packet_generation/tempCodeRunnerFile.py +++ /dev/null @@ -1 +0,0 @@ -_MeasurementSearch \ No newline at end of file From a9309205a5ca316785fd01bafa6c3ad4ffe51f44 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Thu, 26 Dec 2024 20:55:28 +0100 Subject: [PATCH 4/8] Finishes version(may explode) --- Inc/Packet_generation/DataPackets.hpp | 28 ++++++++++++++------------- Inc/Packet_generation/Generator.py | 5 +++-- Inc/Packet_generation/Template.hpp | 2 ++ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Inc/Packet_generation/DataPackets.hpp b/Inc/Packet_generation/DataPackets.hpp index 1dec91050..e46b7c203 100644 --- a/Inc/Packet_generation/DataPackets.hpp +++ b/Inc/Packet_generation/DataPackets.hpp @@ -1,4 +1,6 @@ #include "ST-LIB.hpp" + +//Data packets for OBCCU class DataPacket{ @@ -19,15 +21,15 @@ class DataPacket{ StackPacket* battery_9; StackPacket* battery_10; StackPacket* Fault; - StackPacket* Total Voltage; + StackPacket* Total_Voltage; StackPacket* IMD; StackPacket* Measurements; - StackPacket* OBCPU Measurements; - StackPacket* Contactors State; - StackPacket* Output Voltage; + StackPacket* OBCPU_Measurements; + StackPacket* Contactors_State; + StackPacket* Output_Voltage; - DataPacket(uint8_t idpacket910,float32 battery1_SOC,float32 battery1_cell1,float32 battery1_cell2,float32 battery1_cell3,float32 battery1_cell4,float32 battery1_cell5,float32 battery1_cell6,float32 battery1_minimum_cell,float32 battery1_maximum_cell,float32 battery1_temperature1,float32 battery1_temperature2,bool battery1_is_balancing,float32 battery1_total_voltage,uint8_t idpacket911,float32 battery2_SOC,float32 battery2_cell1,float32 battery2_cell2,float32 battery2_cell3,float32 battery2_cell4,float32 battery2_cell5,float32 battery2_cell6,float32 battery2_minimum_cell,float32 battery2_maximum_cell,float32 battery2_temperature1,float32 battery2_temperature2,bool battery2_is_balancing,float32 battery2_total_voltage,uint8_t idpacket912,float32 battery3_SOC,float32 battery3_cell1,float32 battery3_cell2,float32 battery3_cell3,float32 battery3_cell4,float32 battery3_cell5,float32 battery3_cell6,float32 battery3_minimum_cell,float32 battery3_maximum_cell,float32 battery3_temperature1,float32 battery3_temperature2,bool battery3_is_balancing,float32 battery3_total_voltage,uint8_t idpacket913,float32 battery4_SOC,float32 battery4_cell1,float32 battery4_cell2,float32 battery4_cell3,float32 battery4_cell4,float32 battery4_cell5,float32 battery4_cell6,float32 battery4_minimum_cell,float32 battery4_maximum_cell,float32 battery4_temperature1,float32 battery4_temperature2,bool battery4_is_balancing,float32 battery4_total_voltage,uint8_t idpacket914,float32 battery5_SOC,float32 battery5_cell1,float32 battery5_cell2,float32 battery5_cell3,float32 battery5_cell4,float32 battery5_cell5,float32 battery5_cell6,float32 battery5_minimum_cell,float32 battery5_maximum_cell,float32 battery5_temperature1,float32 battery5_temperature2,bool battery5_is_balancing,float32 battery5_total_voltage,uint8_t idpacket915,float32 battery6_SOC,float32 battery6_cell1,float32 battery6_cell2,float32 battery6_cell3,float32 battery6_cell4,float32 battery6_cell5,float32 battery6_cell6,float32 battery6_minimum_cell,float32 battery6_maximum_cell,float32 battery6_temperature1,float32 battery6_temperature2,bool battery6_is_balancing,float32 battery6_total_voltage,uint8_t idpacket916,float32 battery7_SOC,float32 battery7_cell1,float32 battery7_cell2,float32 battery7_cell3,float32 battery7_cell4,float32 battery7_cell5,float32 battery7_cell6,float32 battery7_minimum_cell,float32 battery7_maximum_cell,float32 battery7_temperature1,float32 battery7_temperature2,bool battery7_is_balancing,float32 battery7_total_voltage,uint8_t idpacket917,float32 battery8_SOC,float32 battery8_cell1,float32 battery8_cell2,float32 battery8_cell3,float32 battery8_cell4,float32 battery8_cell5,float32 battery8_cell6,float32 battery8_minimum_cell,float32 battery8_maximum_cell,float32 battery8_temperature1,float32 battery8_temperature2,bool battery8_is_balancing,float32 battery8_total_voltage,uint8_t idpacket918,float32 battery9_SOC,float32 battery9_cell1,float32 battery9_cell2,float32 battery9_cell3,float32 battery9_cell4,float32 battery9_cell5,float32 battery9_cell6,float32 battery9_minimum_cell,float32 battery9_maximum_cell,float32 battery9_temperature1,float32 battery9_temperature2,bool battery9_is_balancing,float32 battery9_total_voltage,uint8_t idpacket919,float32 battery10_SOC,float32 battery10_cell1,float32 battery10_cell2,float32 battery10_cell3,float32 battery10_cell4,float32 battery10_cell5,float32 battery10_cell6,float32 battery10_minimum_cell,float32 battery10_maximum_cell,float32 battery10_temperature1,float32 battery10_temperature2,bool battery10_is_balancing,float32 battery10_total_voltage,uint8_t idpacket0,uint8_t idpacket921,float32 total_voltage_high,uint8_t idpacket922,uint8_t imd_status,float32 freq_imd,float32 duty_imd,uint8_t idpacket924,float32 battery_current,uint8_t idpacket925,float32 obcpu_input_current,float32 obcpu_input_voltage,float32 obcpu_output_current,float32 obcpu_output_voltage,uint8_t idpacket926,uint8_t contactors_state,uint8_t plug_state,uint8_t board_state,uint8_t idpacket981,float32 output_voltage_lpus,bool driving_mosfets) + DataPacket(uint16_t idpacket910,float32 battery1_SOC,float32 battery1_cell1,float32 battery1_cell2,float32 battery1_cell3,float32 battery1_cell4,float32 battery1_cell5,float32 battery1_cell6,float32 battery1_minimum_cell,float32 battery1_maximum_cell,float32 battery1_temperature1,float32 battery1_temperature2,bool battery1_is_balancing,float32 battery1_total_voltage,uint16_t idpacket911,float32 battery2_SOC,float32 battery2_cell1,float32 battery2_cell2,float32 battery2_cell3,float32 battery2_cell4,float32 battery2_cell5,float32 battery2_cell6,float32 battery2_minimum_cell,float32 battery2_maximum_cell,float32 battery2_temperature1,float32 battery2_temperature2,bool battery2_is_balancing,float32 battery2_total_voltage,uint16_t idpacket912,float32 battery3_SOC,float32 battery3_cell1,float32 battery3_cell2,float32 battery3_cell3,float32 battery3_cell4,float32 battery3_cell5,float32 battery3_cell6,float32 battery3_minimum_cell,float32 battery3_maximum_cell,float32 battery3_temperature1,float32 battery3_temperature2,bool battery3_is_balancing,float32 battery3_total_voltage,uint16_t idpacket913,float32 battery4_SOC,float32 battery4_cell1,float32 battery4_cell2,float32 battery4_cell3,float32 battery4_cell4,float32 battery4_cell5,float32 battery4_cell6,float32 battery4_minimum_cell,float32 battery4_maximum_cell,float32 battery4_temperature1,float32 battery4_temperature2,bool battery4_is_balancing,float32 battery4_total_voltage,uint16_t idpacket914,float32 battery5_SOC,float32 battery5_cell1,float32 battery5_cell2,float32 battery5_cell3,float32 battery5_cell4,float32 battery5_cell5,float32 battery5_cell6,float32 battery5_minimum_cell,float32 battery5_maximum_cell,float32 battery5_temperature1,float32 battery5_temperature2,bool battery5_is_balancing,float32 battery5_total_voltage,uint16_t idpacket915,float32 battery6_SOC,float32 battery6_cell1,float32 battery6_cell2,float32 battery6_cell3,float32 battery6_cell4,float32 battery6_cell5,float32 battery6_cell6,float32 battery6_minimum_cell,float32 battery6_maximum_cell,float32 battery6_temperature1,float32 battery6_temperature2,bool battery6_is_balancing,float32 battery6_total_voltage,uint16_t idpacket916,float32 battery7_SOC,float32 battery7_cell1,float32 battery7_cell2,float32 battery7_cell3,float32 battery7_cell4,float32 battery7_cell5,float32 battery7_cell6,float32 battery7_minimum_cell,float32 battery7_maximum_cell,float32 battery7_temperature1,float32 battery7_temperature2,bool battery7_is_balancing,float32 battery7_total_voltage,uint16_t idpacket917,float32 battery8_SOC,float32 battery8_cell1,float32 battery8_cell2,float32 battery8_cell3,float32 battery8_cell4,float32 battery8_cell5,float32 battery8_cell6,float32 battery8_minimum_cell,float32 battery8_maximum_cell,float32 battery8_temperature1,float32 battery8_temperature2,bool battery8_is_balancing,float32 battery8_total_voltage,uint16_t idpacket918,float32 battery9_SOC,float32 battery9_cell1,float32 battery9_cell2,float32 battery9_cell3,float32 battery9_cell4,float32 battery9_cell5,float32 battery9_cell6,float32 battery9_minimum_cell,float32 battery9_maximum_cell,float32 battery9_temperature1,float32 battery9_temperature2,bool battery9_is_balancing,float32 battery9_total_voltage,uint16_t idpacket919,float32 battery10_SOC,float32 battery10_cell1,float32 battery10_cell2,float32 battery10_cell3,float32 battery10_cell4,float32 battery10_cell5,float32 battery10_cell6,float32 battery10_minimum_cell,float32 battery10_maximum_cell,float32 battery10_temperature1,float32 battery10_temperature2,bool battery10_is_balancing,float32 battery10_total_voltage,uint16_t idpacket0,uint16_t idpacket921,float32 total_voltage_high,uint16_t idpacket922,uint8_t imd_status,float32 freq_imd,float32 duty_imd,uint16_t idpacket924,float32 battery_current,uint16_t idpacket925,float32 obcpu_input_current,float32 obcpu_input_voltage,float32 obcpu_output_current,float32 obcpu_output_voltage,uint16_t idpacket926,uint8_t contactors_state,uint8_t plug_state,uint8_t board_state,uint16_t idpacket981,float32 output_voltage_lpus,bool driving_mosfets) { battery_1 = new StackPacket(&idpacket910,&battery1_SOC,&battery1_cell1,&battery1_cell2,&battery1_cell3,&battery1_cell4,&battery1_cell5,&battery1_cell6,&battery1_minimum_cell,&battery1_maximum_cell,&battery1_temperature1,&battery1_temperature2,&battery1_is_balancing,&battery1_total_voltage); @@ -63,8 +65,8 @@ class DataPacket{ Fault = new StackPacket(&idpacket0); packets[id] = Fault; id++; - Total Voltage = new StackPacket(&idpacket921,&total_voltage_high); - packets[id] = Total Voltage; + Total_Voltage = new StackPacket(&idpacket921,&total_voltage_high); + packets[id] = Total_Voltage; id++; IMD = new StackPacket(&idpacket922,&imd_status,&freq_imd,&duty_imd); packets[id] = IMD; @@ -72,14 +74,14 @@ class DataPacket{ Measurements = new StackPacket(&idpacket924,&battery_current); packets[id] = Measurements; id++; - OBCPU Measurements = new StackPacket(&idpacket925,&obcpu_input_current,&obcpu_input_voltage,&obcpu_output_current,&obcpu_output_voltage); - packets[id] = OBCPU Measurements; + OBCPU_Measurements = new StackPacket(&idpacket925,&obcpu_input_current,&obcpu_input_voltage,&obcpu_output_current,&obcpu_output_voltage); + packets[id] = OBCPU_Measurements; id++; - Contactors State = new StackPacket(&idpacket926,&contactors_state,&plug_state,&board_state); - packets[id] = Contactors State; + Contactors_State = new StackPacket(&idpacket926,&contactors_state,&plug_state,&board_state); + packets[id] = Contactors_State; id++; - Output Voltage = new StackPacket(&idpacket981,&output_voltage_lpus,&driving_mosfets); - packets[id] = Output Voltage; + Output_Voltage = new StackPacket(&idpacket981,&output_voltage_lpus,&driving_mosfets); + packets[id] = Output_Voltage; id++; } diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py index 345a2896f..55c13fac4 100644 --- a/Inc/Packet_generation/Generator.py +++ b/Inc/Packet_generation/Generator.py @@ -37,7 +37,7 @@ def _MeasurementFileSearch(packet:str,measurements:dict): class PacketDescription: def __init__(self, packet:dict,measurements:dict): self.id =packet["id"] - self.name = packet["name"] + self.name = (packet["name"].replace(" ", "_")) self.type = packet["type"] self.variables = [] self.measurements = [] @@ -108,7 +108,7 @@ def GenerateData(board:BoardDescription): for packet_instance in board.packets[packet]: data = "" i=0 - data += "uint8_t idpacket" + str(packet_instance.id) + "," + data += "uint16_t idpacket" + str(packet_instance.id) + "," for variable in packet_instance.variables: data += (str(packet_instance.measurements[i].type)+" "+ str(variable) +",") i += 1 @@ -165,6 +165,7 @@ def Generate_DataPackets_hpp(board_input:str): with open("Inc/Packet_generation/Template.hpp","r") as Input: data= Input.read() + data = data.replace("%board%", board_instance.name) data = data.replace("%enums%", GenerateEnum(board_instance)) data = data.replace("%packetnames%", GenerateDataNames(board_instance,packet_name)) data = data.replace("%size%", str(board_instance.size)) diff --git a/Inc/Packet_generation/Template.hpp b/Inc/Packet_generation/Template.hpp index c2df65410..2118a206c 100644 --- a/Inc/Packet_generation/Template.hpp +++ b/Inc/Packet_generation/Template.hpp @@ -1,4 +1,6 @@ #include "ST-LIB.hpp" + +//Data packets for %board% class DataPacket{ %enums% From 7b5d4e9f00650d59b1b6c4af7bfc1c86f52c0914 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Fri, 27 Dec 2024 00:10:13 +0100 Subject: [PATCH 5/8] No more duplicates on the constructor --- Inc/Packet_generation/DataPackets.hpp | 91 +++++++-------------------- Inc/Packet_generation/Generator.py | 6 +- 2 files changed, 24 insertions(+), 73 deletions(-) diff --git a/Inc/Packet_generation/DataPackets.hpp b/Inc/Packet_generation/DataPackets.hpp index e46b7c203..35ae09471 100644 --- a/Inc/Packet_generation/DataPackets.hpp +++ b/Inc/Packet_generation/DataPackets.hpp @@ -1,87 +1,38 @@ #include "ST-LIB.hpp" -//Data packets for OBCCU +//Data packets for LCU class DataPacket{ - +enum class general_state{ + DEFINING, +CONNECTING, +OPERATIONAL, +FAULT +}; +enum class slave_state{ + DEFINING, +CONNECTING, +OPERATIONAL, +FAULT +}; private: - constexpr static size_t size =19; + constexpr static size_t size =2; uint32_t id{0}; public: std::array packets; - StackPacket* battery_1; - StackPacket* battery_2; - StackPacket* battery_3; - StackPacket* battery_4; - StackPacket* battery_5; - StackPacket* battery_6; - StackPacket* battery_7; - StackPacket* battery_8; - StackPacket* battery_9; - StackPacket* battery_10; - StackPacket* Fault; - StackPacket* Total_Voltage; - StackPacket* IMD; - StackPacket* Measurements; - StackPacket* OBCPU_Measurements; - StackPacket* Contactors_State; - StackPacket* Output_Voltage; + StackPacket* levitation_control_data; + StackPacket* lcu_data; - DataPacket(uint16_t idpacket910,float32 battery1_SOC,float32 battery1_cell1,float32 battery1_cell2,float32 battery1_cell3,float32 battery1_cell4,float32 battery1_cell5,float32 battery1_cell6,float32 battery1_minimum_cell,float32 battery1_maximum_cell,float32 battery1_temperature1,float32 battery1_temperature2,bool battery1_is_balancing,float32 battery1_total_voltage,uint16_t idpacket911,float32 battery2_SOC,float32 battery2_cell1,float32 battery2_cell2,float32 battery2_cell3,float32 battery2_cell4,float32 battery2_cell5,float32 battery2_cell6,float32 battery2_minimum_cell,float32 battery2_maximum_cell,float32 battery2_temperature1,float32 battery2_temperature2,bool battery2_is_balancing,float32 battery2_total_voltage,uint16_t idpacket912,float32 battery3_SOC,float32 battery3_cell1,float32 battery3_cell2,float32 battery3_cell3,float32 battery3_cell4,float32 battery3_cell5,float32 battery3_cell6,float32 battery3_minimum_cell,float32 battery3_maximum_cell,float32 battery3_temperature1,float32 battery3_temperature2,bool battery3_is_balancing,float32 battery3_total_voltage,uint16_t idpacket913,float32 battery4_SOC,float32 battery4_cell1,float32 battery4_cell2,float32 battery4_cell3,float32 battery4_cell4,float32 battery4_cell5,float32 battery4_cell6,float32 battery4_minimum_cell,float32 battery4_maximum_cell,float32 battery4_temperature1,float32 battery4_temperature2,bool battery4_is_balancing,float32 battery4_total_voltage,uint16_t idpacket914,float32 battery5_SOC,float32 battery5_cell1,float32 battery5_cell2,float32 battery5_cell3,float32 battery5_cell4,float32 battery5_cell5,float32 battery5_cell6,float32 battery5_minimum_cell,float32 battery5_maximum_cell,float32 battery5_temperature1,float32 battery5_temperature2,bool battery5_is_balancing,float32 battery5_total_voltage,uint16_t idpacket915,float32 battery6_SOC,float32 battery6_cell1,float32 battery6_cell2,float32 battery6_cell3,float32 battery6_cell4,float32 battery6_cell5,float32 battery6_cell6,float32 battery6_minimum_cell,float32 battery6_maximum_cell,float32 battery6_temperature1,float32 battery6_temperature2,bool battery6_is_balancing,float32 battery6_total_voltage,uint16_t idpacket916,float32 battery7_SOC,float32 battery7_cell1,float32 battery7_cell2,float32 battery7_cell3,float32 battery7_cell4,float32 battery7_cell5,float32 battery7_cell6,float32 battery7_minimum_cell,float32 battery7_maximum_cell,float32 battery7_temperature1,float32 battery7_temperature2,bool battery7_is_balancing,float32 battery7_total_voltage,uint16_t idpacket917,float32 battery8_SOC,float32 battery8_cell1,float32 battery8_cell2,float32 battery8_cell3,float32 battery8_cell4,float32 battery8_cell5,float32 battery8_cell6,float32 battery8_minimum_cell,float32 battery8_maximum_cell,float32 battery8_temperature1,float32 battery8_temperature2,bool battery8_is_balancing,float32 battery8_total_voltage,uint16_t idpacket918,float32 battery9_SOC,float32 battery9_cell1,float32 battery9_cell2,float32 battery9_cell3,float32 battery9_cell4,float32 battery9_cell5,float32 battery9_cell6,float32 battery9_minimum_cell,float32 battery9_maximum_cell,float32 battery9_temperature1,float32 battery9_temperature2,bool battery9_is_balancing,float32 battery9_total_voltage,uint16_t idpacket919,float32 battery10_SOC,float32 battery10_cell1,float32 battery10_cell2,float32 battery10_cell3,float32 battery10_cell4,float32 battery10_cell5,float32 battery10_cell6,float32 battery10_minimum_cell,float32 battery10_maximum_cell,float32 battery10_temperature1,float32 battery10_temperature2,bool battery10_is_balancing,float32 battery10_total_voltage,uint16_t idpacket0,uint16_t idpacket921,float32 total_voltage_high,uint16_t idpacket922,uint8_t imd_status,float32 freq_imd,float32 duty_imd,uint16_t idpacket924,float32 battery_current,uint16_t idpacket925,float32 obcpu_input_current,float32 obcpu_input_voltage,float32 obcpu_output_current,float32 obcpu_output_voltage,uint16_t idpacket926,uint8_t contactors_state,uint8_t plug_state,uint8_t board_state,uint16_t idpacket981,float32 output_voltage_lpus,bool driving_mosfets) + DataPacket(uint16_t idpacket316,uint32_t current_control_frequency,uint32_t levitation_control_frequency,float32 lcu_coil_current_ref_1,float32 lcu_coil_current_ref_2,float32 lcu_coil_current_ref_3,float32 lcu_coil_current_ref_4,float32 lcu_coil_current_ref_5,float32 lcu_coil_current_ref_6,float32 lcu_coil_current_ref_7,float32 lcu_coil_current_ref_8,float32 lcu_coil_current_ref_9,float32 lcu_coil_current_ref_10,float32 pos_y,float32 pos_y_d,float32 pos_y_i,float32 pos_z,float32 pos_z_d,float32 pos_z_i,float32 pos_rot_x,float32 pos_rot_x_d,float32 pos_rot_x_i,float32 pos_rot_y,float32 pos_rot_y_d,float32 pos_rot_y_i,float32 pos_rot_z,float32 pos_rot_z_d,float32 pos_rot_z_i,uint16_t idpacket315,general_state general_state,slave_state slave_state,float32 lcu_coil_temp_1,float32 lcu_coil_temp_2,float32 lcu_coil_temp_3,float32 lcu_coil_temp_4,float32 lcu_coil_temp_5,float32 lcu_coil_temp_6,float32 lcu_coil_temp_7,float32 lcu_coil_temp_8,float32 lcu_coil_temp_9,float32 lcu_coil_temp_10,float32 lcu_driver_temp_1,float32 lcu_driver_temp_2,float32 lcu_driver_temp_3,float32 lcu_driver_temp_4,float32 lcu_driver_temp_5,float32 lcu_driver_temp_6,float32 lcu_driver_temp_7,float32 lcu_driver_temp_8,float32 lcu_driver_temp_9,float32 lcu_driver_temp_10,float32 lcu_coil_current_1,float32 lcu_coil_current_2,float32 lcu_coil_current_3,float32 lcu_coil_current_4,float32 lcu_coil_current_5,float32 lcu_coil_current_6,float32 lcu_coil_current_7,float32 lcu_coil_current_8,float32 lcu_coil_current_9,float32 lcu_coil_current_10,float32 lcu_vbat_1,float32 lcu_vbat_2,float32 lcu_vbat_3,float32 lcu_vbat_4,float32 lcu_vbat_5,float32 lcu_vbat_6,float32 lcu_vbat_7,float32 lcu_vbat_8,float32 lcu_vbat_9,float32 lcu_vbat_10,float32 lcu_airgap_1,float32 lcu_airgap_2,float32 lcu_airgap_3,float32 lcu_airgap_4,float32 lcu_airgap_5,float32 lcu_airgap_6,float32 lcu_airgap_7,float32 lcu_airgap_8) { - battery_1 = new StackPacket(&idpacket910,&battery1_SOC,&battery1_cell1,&battery1_cell2,&battery1_cell3,&battery1_cell4,&battery1_cell5,&battery1_cell6,&battery1_minimum_cell,&battery1_maximum_cell,&battery1_temperature1,&battery1_temperature2,&battery1_is_balancing,&battery1_total_voltage); - packets[id] = battery_1; - id++; - battery_2 = new StackPacket(&idpacket911,&battery2_SOC,&battery2_cell1,&battery2_cell2,&battery2_cell3,&battery2_cell4,&battery2_cell5,&battery2_cell6,&battery2_minimum_cell,&battery2_maximum_cell,&battery2_temperature1,&battery2_temperature2,&battery2_is_balancing,&battery2_total_voltage); - packets[id] = battery_2; - id++; - battery_3 = new StackPacket(&idpacket912,&battery3_SOC,&battery3_cell1,&battery3_cell2,&battery3_cell3,&battery3_cell4,&battery3_cell5,&battery3_cell6,&battery3_minimum_cell,&battery3_maximum_cell,&battery3_temperature1,&battery3_temperature2,&battery3_is_balancing,&battery3_total_voltage); - packets[id] = battery_3; - id++; - battery_4 = new StackPacket(&idpacket913,&battery4_SOC,&battery4_cell1,&battery4_cell2,&battery4_cell3,&battery4_cell4,&battery4_cell5,&battery4_cell6,&battery4_minimum_cell,&battery4_maximum_cell,&battery4_temperature1,&battery4_temperature2,&battery4_is_balancing,&battery4_total_voltage); - packets[id] = battery_4; - id++; - battery_5 = new StackPacket(&idpacket914,&battery5_SOC,&battery5_cell1,&battery5_cell2,&battery5_cell3,&battery5_cell4,&battery5_cell5,&battery5_cell6,&battery5_minimum_cell,&battery5_maximum_cell,&battery5_temperature1,&battery5_temperature2,&battery5_is_balancing,&battery5_total_voltage); - packets[id] = battery_5; - id++; - battery_6 = new StackPacket(&idpacket915,&battery6_SOC,&battery6_cell1,&battery6_cell2,&battery6_cell3,&battery6_cell4,&battery6_cell5,&battery6_cell6,&battery6_minimum_cell,&battery6_maximum_cell,&battery6_temperature1,&battery6_temperature2,&battery6_is_balancing,&battery6_total_voltage); - packets[id] = battery_6; - id++; - battery_7 = new StackPacket(&idpacket916,&battery7_SOC,&battery7_cell1,&battery7_cell2,&battery7_cell3,&battery7_cell4,&battery7_cell5,&battery7_cell6,&battery7_minimum_cell,&battery7_maximum_cell,&battery7_temperature1,&battery7_temperature2,&battery7_is_balancing,&battery7_total_voltage); - packets[id] = battery_7; - id++; - battery_8 = new StackPacket(&idpacket917,&battery8_SOC,&battery8_cell1,&battery8_cell2,&battery8_cell3,&battery8_cell4,&battery8_cell5,&battery8_cell6,&battery8_minimum_cell,&battery8_maximum_cell,&battery8_temperature1,&battery8_temperature2,&battery8_is_balancing,&battery8_total_voltage); - packets[id] = battery_8; - id++; - battery_9 = new StackPacket(&idpacket918,&battery9_SOC,&battery9_cell1,&battery9_cell2,&battery9_cell3,&battery9_cell4,&battery9_cell5,&battery9_cell6,&battery9_minimum_cell,&battery9_maximum_cell,&battery9_temperature1,&battery9_temperature2,&battery9_is_balancing,&battery9_total_voltage); - packets[id] = battery_9; - id++; - battery_10 = new StackPacket(&idpacket919,&battery10_SOC,&battery10_cell1,&battery10_cell2,&battery10_cell3,&battery10_cell4,&battery10_cell5,&battery10_cell6,&battery10_minimum_cell,&battery10_maximum_cell,&battery10_temperature1,&battery10_temperature2,&battery10_is_balancing,&battery10_total_voltage); - packets[id] = battery_10; - id++; - Fault = new StackPacket(&idpacket0); - packets[id] = Fault; - id++; - Total_Voltage = new StackPacket(&idpacket921,&total_voltage_high); - packets[id] = Total_Voltage; - id++; - IMD = new StackPacket(&idpacket922,&imd_status,&freq_imd,&duty_imd); - packets[id] = IMD; - id++; - Measurements = new StackPacket(&idpacket924,&battery_current); - packets[id] = Measurements; - id++; - OBCPU_Measurements = new StackPacket(&idpacket925,&obcpu_input_current,&obcpu_input_voltage,&obcpu_output_current,&obcpu_output_voltage); - packets[id] = OBCPU_Measurements; - id++; - Contactors_State = new StackPacket(&idpacket926,&contactors_state,&plug_state,&board_state); - packets[id] = Contactors_State; + levitation_control_data = new StackPacket(&idpacket316,¤t_control_frequency,&levitation_control_frequency,&lcu_coil_current_ref_1,&lcu_coil_current_ref_2,&lcu_coil_current_ref_3,&lcu_coil_current_ref_4,&lcu_coil_current_ref_5,&lcu_coil_current_ref_6,&lcu_coil_current_ref_7,&lcu_coil_current_ref_8,&lcu_coil_current_ref_9,&lcu_coil_current_ref_10,&pos_y,&pos_y_d,&pos_y_i,&pos_z,&pos_z_d,&pos_z_i,&pos_rot_x,&pos_rot_x_d,&pos_rot_x_i,&pos_rot_y,&pos_rot_y_d,&pos_rot_y_i,&pos_rot_z,&pos_rot_z_d,&pos_rot_z_i); + packets[id] = levitation_control_data; id++; - Output_Voltage = new StackPacket(&idpacket981,&output_voltage_lpus,&driving_mosfets); - packets[id] = Output_Voltage; + lcu_data = new StackPacket(&idpacket315,&general_state,&slave_state,&lcu_coil_temp_1,&lcu_coil_temp_2,&lcu_coil_temp_3,&lcu_coil_temp_4,&lcu_coil_temp_5,&lcu_coil_temp_6,&lcu_coil_temp_7,&lcu_coil_temp_8,&lcu_coil_temp_9,&lcu_coil_temp_10,&lcu_driver_temp_1,&lcu_driver_temp_2,&lcu_driver_temp_3,&lcu_driver_temp_4,&lcu_driver_temp_5,&lcu_driver_temp_6,&lcu_driver_temp_7,&lcu_driver_temp_8,&lcu_driver_temp_9,&lcu_driver_temp_10,&lcu_coil_current_1,&lcu_coil_current_2,&lcu_coil_current_3,&lcu_coil_current_4,&lcu_coil_current_5,&lcu_coil_current_6,&lcu_coil_current_7,&lcu_coil_current_8,&lcu_coil_current_9,&lcu_coil_current_10,&lcu_vbat_1,&lcu_vbat_2,&lcu_vbat_3,&lcu_vbat_4,&lcu_vbat_5,&lcu_vbat_6,&lcu_vbat_7,&lcu_vbat_8,&lcu_vbat_9,&lcu_vbat_10,&lcu_airgap_1,&lcu_airgap_2,&lcu_airgap_3,&lcu_airgap_4,&lcu_airgap_5,&lcu_airgap_6,&lcu_airgap_7,&lcu_airgap_8); + packets[id] = lcu_data; id++; } diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py index 55c13fac4..25a62e01d 100644 --- a/Inc/Packet_generation/Generator.py +++ b/Inc/Packet_generation/Generator.py @@ -102,7 +102,7 @@ def GenerateEnum(board:BoardDescription): return enums_data def GenerateData(board:BoardDescription): - Data =[] + Data =set() for packet in board.packets: if packet != "orders": for packet_instance in board.packets[packet]: @@ -112,8 +112,8 @@ def GenerateData(board:BoardDescription): for variable in packet_instance.variables: data += (str(packet_instance.measurements[i].type)+" "+ str(variable) +",") i += 1 - Data.append(data) - + Data.add(data) + Data = list(Data) if Data and Data[-1].endswith(","): Data[-1] = Data[-1][:-1] total_data ="".join(Data) From 73dfe15f2118ce561995037ed86e546ada96efb5 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Fri, 27 Dec 2024 00:11:00 +0100 Subject: [PATCH 6/8] Same as before --- Inc/Packet_generation/Generator.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py index 25a62e01d..a44d43d23 100644 --- a/Inc/Packet_generation/Generator.py +++ b/Inc/Packet_generation/Generator.py @@ -91,13 +91,14 @@ def _unsigned_int_correction(type:str): def GenerateEnum(board:BoardDescription): - Enums = [] + Enums = set() for packet in board.packets: if packet != "orders": for packet_instance in board.packets[packet]: for measurement in packet_instance.measurements: if hasattr(measurement, "enum"): - Enums.append(measurement.enum) + Enums.add(measurement.enum) + Enums = list(Enums) enums_data = "\n".join(Enums) return enums_data From 7da6bfbc24a4f458e35a8d20969cb2b9be7a07c7 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Mon, 30 Dec 2024 00:50:15 +0100 Subject: [PATCH 7/8] Changed from stlib to template proyect --- Inc/Packet_generation/DataPackets.hpp | 39 --------------------------- Inc/Packet_generation/Generator.py | 8 +++--- Inc/Packet_generation/JSON_ADE | 1 - Inc/Packet_generation/Template.hpp | 21 --------------- 4 files changed, 4 insertions(+), 65 deletions(-) delete mode 100644 Inc/Packet_generation/DataPackets.hpp delete mode 160000 Inc/Packet_generation/JSON_ADE delete mode 100644 Inc/Packet_generation/Template.hpp diff --git a/Inc/Packet_generation/DataPackets.hpp b/Inc/Packet_generation/DataPackets.hpp deleted file mode 100644 index 35ae09471..000000000 --- a/Inc/Packet_generation/DataPackets.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "ST-LIB.hpp" - -//Data packets for LCU -class DataPacket{ - -enum class general_state{ - DEFINING, -CONNECTING, -OPERATIONAL, -FAULT -}; -enum class slave_state{ - DEFINING, -CONNECTING, -OPERATIONAL, -FAULT -}; - - private: - constexpr static size_t size =2; - uint32_t id{0}; - public: - std::array packets; - StackPacket* levitation_control_data; - StackPacket* lcu_data; - - - DataPacket(uint16_t idpacket316,uint32_t current_control_frequency,uint32_t levitation_control_frequency,float32 lcu_coil_current_ref_1,float32 lcu_coil_current_ref_2,float32 lcu_coil_current_ref_3,float32 lcu_coil_current_ref_4,float32 lcu_coil_current_ref_5,float32 lcu_coil_current_ref_6,float32 lcu_coil_current_ref_7,float32 lcu_coil_current_ref_8,float32 lcu_coil_current_ref_9,float32 lcu_coil_current_ref_10,float32 pos_y,float32 pos_y_d,float32 pos_y_i,float32 pos_z,float32 pos_z_d,float32 pos_z_i,float32 pos_rot_x,float32 pos_rot_x_d,float32 pos_rot_x_i,float32 pos_rot_y,float32 pos_rot_y_d,float32 pos_rot_y_i,float32 pos_rot_z,float32 pos_rot_z_d,float32 pos_rot_z_i,uint16_t idpacket315,general_state general_state,slave_state slave_state,float32 lcu_coil_temp_1,float32 lcu_coil_temp_2,float32 lcu_coil_temp_3,float32 lcu_coil_temp_4,float32 lcu_coil_temp_5,float32 lcu_coil_temp_6,float32 lcu_coil_temp_7,float32 lcu_coil_temp_8,float32 lcu_coil_temp_9,float32 lcu_coil_temp_10,float32 lcu_driver_temp_1,float32 lcu_driver_temp_2,float32 lcu_driver_temp_3,float32 lcu_driver_temp_4,float32 lcu_driver_temp_5,float32 lcu_driver_temp_6,float32 lcu_driver_temp_7,float32 lcu_driver_temp_8,float32 lcu_driver_temp_9,float32 lcu_driver_temp_10,float32 lcu_coil_current_1,float32 lcu_coil_current_2,float32 lcu_coil_current_3,float32 lcu_coil_current_4,float32 lcu_coil_current_5,float32 lcu_coil_current_6,float32 lcu_coil_current_7,float32 lcu_coil_current_8,float32 lcu_coil_current_9,float32 lcu_coil_current_10,float32 lcu_vbat_1,float32 lcu_vbat_2,float32 lcu_vbat_3,float32 lcu_vbat_4,float32 lcu_vbat_5,float32 lcu_vbat_6,float32 lcu_vbat_7,float32 lcu_vbat_8,float32 lcu_vbat_9,float32 lcu_vbat_10,float32 lcu_airgap_1,float32 lcu_airgap_2,float32 lcu_airgap_3,float32 lcu_airgap_4,float32 lcu_airgap_5,float32 lcu_airgap_6,float32 lcu_airgap_7,float32 lcu_airgap_8) -{ - - levitation_control_data = new StackPacket(&idpacket316,¤t_control_frequency,&levitation_control_frequency,&lcu_coil_current_ref_1,&lcu_coil_current_ref_2,&lcu_coil_current_ref_3,&lcu_coil_current_ref_4,&lcu_coil_current_ref_5,&lcu_coil_current_ref_6,&lcu_coil_current_ref_7,&lcu_coil_current_ref_8,&lcu_coil_current_ref_9,&lcu_coil_current_ref_10,&pos_y,&pos_y_d,&pos_y_i,&pos_z,&pos_z_d,&pos_z_i,&pos_rot_x,&pos_rot_x_d,&pos_rot_x_i,&pos_rot_y,&pos_rot_y_d,&pos_rot_y_i,&pos_rot_z,&pos_rot_z_d,&pos_rot_z_i); - packets[id] = levitation_control_data; - id++; - lcu_data = new StackPacket(&idpacket315,&general_state,&slave_state,&lcu_coil_temp_1,&lcu_coil_temp_2,&lcu_coil_temp_3,&lcu_coil_temp_4,&lcu_coil_temp_5,&lcu_coil_temp_6,&lcu_coil_temp_7,&lcu_coil_temp_8,&lcu_coil_temp_9,&lcu_coil_temp_10,&lcu_driver_temp_1,&lcu_driver_temp_2,&lcu_driver_temp_3,&lcu_driver_temp_4,&lcu_driver_temp_5,&lcu_driver_temp_6,&lcu_driver_temp_7,&lcu_driver_temp_8,&lcu_driver_temp_9,&lcu_driver_temp_10,&lcu_coil_current_1,&lcu_coil_current_2,&lcu_coil_current_3,&lcu_coil_current_4,&lcu_coil_current_5,&lcu_coil_current_6,&lcu_coil_current_7,&lcu_coil_current_8,&lcu_coil_current_9,&lcu_coil_current_10,&lcu_vbat_1,&lcu_vbat_2,&lcu_vbat_3,&lcu_vbat_4,&lcu_vbat_5,&lcu_vbat_6,&lcu_vbat_7,&lcu_vbat_8,&lcu_vbat_9,&lcu_vbat_10,&lcu_airgap_1,&lcu_airgap_2,&lcu_airgap_3,&lcu_airgap_4,&lcu_airgap_5,&lcu_airgap_6,&lcu_airgap_7,&lcu_airgap_8); - packets[id] = lcu_data; - id++; - -} -}; \ No newline at end of file diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py index a44d43d23..cf2a1546f 100644 --- a/Inc/Packet_generation/Generator.py +++ b/Inc/Packet_generation/Generator.py @@ -109,9 +109,9 @@ def GenerateData(board:BoardDescription): for packet_instance in board.packets[packet]: data = "" i=0 - data += "uint16_t idpacket" + str(packet_instance.id) + "," + data += "uint16_t &idpacket" + str(packet_instance.id) + "," for variable in packet_instance.variables: - data += (str(packet_instance.measurements[i].type)+" "+ str(variable) +",") + data += (str(packet_instance.measurements[i].type)+" &"+ str(variable) +",") i += 1 Data.add(data) Data = list(Data) @@ -138,10 +138,10 @@ def GenerateDataPackets(board:BoardDescription,packet_struct:str): if packet != "orders": for packet_instance in board.packets[packet]: data = "" - data +="&idpacket"+str(packet_instance.id)+"," + data +=" idpacket"+str(packet_instance.id)+"," for variable in packet_instance.variables: - data += ("&"+str(variable) +",") + data += (str(variable) +",") if data.endswith(","): data = data[:-1] aux = packet_struct diff --git a/Inc/Packet_generation/JSON_ADE b/Inc/Packet_generation/JSON_ADE deleted file mode 160000 index 5857e0f8d..000000000 --- a/Inc/Packet_generation/JSON_ADE +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5857e0f8d85aa9b5953e3b84d7cc39b1c9a96858 diff --git a/Inc/Packet_generation/Template.hpp b/Inc/Packet_generation/Template.hpp deleted file mode 100644 index 2118a206c..000000000 --- a/Inc/Packet_generation/Template.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "ST-LIB.hpp" - -//Data packets for %board% -class DataPacket{ - -%enums% - - private: - constexpr static size_t size =%size%; - uint32_t id{0}; - public: - std::array packets; -%packetnames% - - DataPacket(%data%) -{ - -%packets% - -} -}; \ No newline at end of file From 12d216eec36057fcb1264221ddfe66555f3e7af9 Mon Sep 17 00:00:00 2001 From: Catonplas Date: Mon, 30 Dec 2024 00:51:11 +0100 Subject: [PATCH 8/8] a --- Inc/Packet_generation/Generator.py | 191 ----------------------------- 1 file changed, 191 deletions(-) delete mode 100644 Inc/Packet_generation/Generator.py diff --git a/Inc/Packet_generation/Generator.py b/Inc/Packet_generation/Generator.py deleted file mode 100644 index cf2a1546f..000000000 --- a/Inc/Packet_generation/Generator.py +++ /dev/null @@ -1,191 +0,0 @@ -import json -import re - -packet_name= " StackPacket* %name%;\n" -packet_struct = " %name% = new StackPacket(%packet_data%);\n packets[id] = %name%;\n id++;" -enum_template = "enum class %name%{ \n %values% \n};" - -class BoardDescription: - def __init__(self,name:str,board:dict): - self.name = name - self.id = board["board_id"] - self.ip = board["board_ip"] - self.size =0 - i = 0 - self.packets = {} - for packets in board["packets"]: - packets_name = re.split(r'_|\.', packets)[0] - self.packets[packets_name] = [] - measurement = self._MeasurementFileSearch(packets,board["measurements"]) - with open("Inc/Packet_generation/JSON_ADE/boards/" + name+"/" + board["packets"][i]) as f: - p= json.load(f) - with open("Inc/Packet_generation/JSON_ADE/boards/" + name + "/" + measurement) as f: - m = json.load(f) - i += 1 - for packet in p["packets"]: - self.packets[packets_name].append(PacketDescription(packet,m)) - self.size = self.size +1 - @staticmethod - def _MeasurementFileSearch(packet:str,measurements:dict): - packet_name = packet.split('_')[0] - for measurement in measurements: - measurement_name = measurement.split('_')[0] - if packet_name[0] == measurement_name[0]: - return measurement - else: - return measurements[0] -class PacketDescription: - def __init__(self, packet:dict,measurements:dict): - self.id =packet["id"] - self.name = (packet["name"].replace(" ", "_")) - self.type = packet["type"] - self.variables = [] - self.measurements = [] - i=0 - for variable in packet["variables"]: - self.variables.append(variable["name"]) - self.measurements.append(MeasurmentsDescription(measurements,variable["name"])) - - -class MeasurmentsDescription: - def __init__(self,measurements:dict, variable:str): - self.id = variable - measurement = self._MeasurementSearch(measurements,variable) - if measurement is None: - raise Exception("Measurement not found") - else: - self.name = measurement["name"] - self.type = self._unsigned_int_correction(measurement["type"]) - if self.type == "enum": - self.enum = self._create_enum(measurement) - self.type = measurement["id"] - - @staticmethod - def _MeasurementSearch(measurements:dict, variable:str): - for measurment in measurements["measurements"]: - if measurment["id"] == variable: - return measurment - return None - - @staticmethod - def _create_enum(measurement: dict): - if "enumValues" not in measurement: - raise ValueError("Measurement does not contain 'enumValues'") - - enum = enum_template.replace("%name%", measurement["id"]) - values = "" - for value in measurement["enumValues"]: - values += value + ",\n" - if values.endswith(",\n"): - values = values[:-2] - values += "\n" - enum = enum.replace("%values%", values.strip()) - return enum - - @staticmethod - def _unsigned_int_correction(type:str): - aux_type = type[:4] - if aux_type == "uint": - type += "_t" - return type - - -def GenerateEnum(board:BoardDescription): - Enums = set() - for packet in board.packets: - if packet != "orders": - for packet_instance in board.packets[packet]: - for measurement in packet_instance.measurements: - if hasattr(measurement, "enum"): - Enums.add(measurement.enum) - Enums = list(Enums) - enums_data = "\n".join(Enums) - return enums_data - -def GenerateData(board:BoardDescription): - Data =set() - for packet in board.packets: - if packet != "orders": - for packet_instance in board.packets[packet]: - data = "" - i=0 - data += "uint16_t &idpacket" + str(packet_instance.id) + "," - for variable in packet_instance.variables: - data += (str(packet_instance.measurements[i].type)+" &"+ str(variable) +",") - i += 1 - Data.add(data) - Data = list(Data) - if Data and Data[-1].endswith(","): - Data[-1] = Data[-1][:-1] - total_data ="".join(Data) - return total_data - -def GenerateDataNames(board:BoardDescription,packet_name:str): - Names =[] - for packet in board.packets: - if packet != "orders": - for packet_instance in board.packets[packet]: - data = "" - data += packet_name.replace("%name%",packet_instance.name) - Names.append(data) - names_data = "".join(Names) - return names_data - - -def GenerateDataPackets(board:BoardDescription,packet_struct:str): - Packets =[] - for packet in board.packets: - if packet != "orders": - for packet_instance in board.packets[packet]: - data = "" - data +=" idpacket"+str(packet_instance.id)+"," - - for variable in packet_instance.variables: - data += (str(variable) +",") - if data.endswith(","): - data = data[:-1] - aux = packet_struct - aux = aux.replace("%name%",packet_instance.name) - Packets.append(aux.replace("%packet_data%", data)) - - packets_data = "\n".join(Packets) - return packets_data - -def Generate_DataPackets_hpp(board_input:str): - with open("Inc/Packet_generation/JSON_ADE/boards.json") as f: - boards = json.load(f) - - for board in boards["boards"]: - with open("Inc/Packet_generation/JSON_ADE/" + (boards["boards"][board])) as f: - b = json.load(f) - board_instance = BoardDescription(board, b) - globals()[board] = board_instance - - board_instance = globals()[board_input] - - with open("Inc/Packet_generation/Template.hpp","r") as Input: - data= Input.read() - - data = data.replace("%board%", board_instance.name) - data = data.replace("%enums%", GenerateEnum(board_instance)) - data = data.replace("%packetnames%", GenerateDataNames(board_instance,packet_name)) - data = data.replace("%size%", str(board_instance.size)) - data = data.replace("%data%", GenerateData(board_instance)) - data = data.replace("%packets%", GenerateDataPackets(board_instance,packet_struct)) - - with open("Inc/Packet_generation/DataPackets.hpp","w") as Output: - Output.write(data) - -board = input("Enter board name: ") -while board not in ["VCU","OBCCU","LCU"]: - print("Board not found, only VCU, OBCCU and LCU are available") - board = input("Enter board name: ") -Generate_DataPackets_hpp(board) - - - - - - - - \ No newline at end of file