diff --git a/Python/board.py b/Python/board.py index f3f7e91..381bc2f 100644 --- a/Python/board.py +++ b/Python/board.py @@ -108,6 +108,27 @@ def __init__(self, parent, name: str): "Abort": 6, "Post": 7, } + elif self.name == "Flight Computer": + self.stateMap = { + -1: "", + 0: "Manual", + 1: "Armed", + 2: "Ascent", + 3: "Drogue", + 4: "Main", + 5: "Touchdown", + 6: "Abort", + } + self.stateNum = { + "": -1, + "Manual": 0, + "Armed": 1, + "Ascent": 2, + "Drogue": 3, + "Main": 4, + "Touchdown": 5, + "Abort": 6, + } """ TODO fill this out when we figure out other boards' state mappings @@ -493,6 +514,10 @@ def sendBoardState(self, identifier: str): elif self.state == self.stateNum["Ignition"]: newState = self.stateNum["Hotfire"] # Anytime can call an abort to abort out + elif self.name == "Flight Computer": + if self.state == self.stateNum["Armed"]: + newState = self.stateNum["Ascent"] # this might need to be removed idk why we are switching to the next state client side + # Anytime can call an abort to abort out elif identifier == "Abort": newState = self.stateNum["Abort"] elif identifier == "Continue": @@ -546,6 +571,8 @@ def setBoardState(self, state: int): pass elif self.name == "Engine Controller": pass + elif self.name == "Flight Computer": + pass else: print("Invalid board(" + self.name + ") somehow used in Board:setBoardState, it should never get to this point lol. State: " + str(state)) return @@ -801,6 +828,49 @@ def update(self, ebatt, ibatt, state, flash, LPT, adc_rate, telem_rate, state_re self.arm_button.setEnabled(False) self.fire_button.setEnabled(False) self.abort_button.setEnabled(False) + elif self.name == "Flight Computer": + if self.state == self.stateNum["Manual"]: + self.manual_button.setText("Manual") + self.manual_button.setEnabled(False) + self.arm_button.setEnabled(True) + self.fire_button.setEnabled(False) + self.abort_button.setEnabled(False) + + elif self.state == self.stateNum["Armed"]: + self.manual_button.setText("Disarm") + self.manual_button.setEnabled(True) + self.arm_button.setEnabled(False) + self.fire_button.setEnabled(True) + self.abort_button.setEnabled(False) + + elif self.state == self.stateNum["Ascent"]: + self.manual_button.setText("Disarm") + self.manual_button.setEnabled(False) + self.arm_button.setEnabled(False) + self.fire_button.setEnabled(False) + self.abort_button.setEnabled(True) + + elif self.state == self.stateNum["Drogue"]: + self.manual_button.setText("Disarm") + self.manual_button.setEnabled(False) + self.arm_button.setEnabled(False) + self.fire_button.setEnabled(False) + self.abort_button.setEnabled(True) + + elif self.state == self.stateNum["Touchdown"]: + self.manual_button.setText("Disarm") + self.manual_button.setEnabled(False) + self.arm_button.setEnabled(False) + self.fire_button.setEnabled(False) + self.abort_button.setEnabled(True) + + + elif self.state == self.stateNum["Abort"]: + self.manual_button.setText("Disarm") + self.manual_button.setEnabled(True) + self.arm_button.setEnabled(False) + self.fire_button.setEnabled(False) + self.abort_button.setEnabled(False) @@ -812,7 +882,7 @@ def updateFromDataPacket(self, data_packet: dict): if self.name == "Flight Computer": self.update(data_packet[prefix + "e_batt"], 0, data_packet[prefix + "STATE"], False, data_packet[prefix + "timestamp"], data_packet[prefix + "adc_rate"], - data_packet[prefix + "telem_rate"]) # no flash state yet, no i_batt + data_packet[prefix + "telem_rate"], False) # no flash state yet, no i_batt elif self.name == "Black Box": self.update(0, 0, data_packet[prefix + "STATE"], False, data_packet[prefix + "timestamp"], data_packet[prefix + "adc_rate"], diff --git a/Python/parsers/flightCompParse.py b/Python/parsers/flightCompParse.py index eb01df5..743fe21 100644 --- a/Python/parsers/flightCompParse.py +++ b/Python/parsers/flightCompParse.py @@ -1,7 +1,7 @@ ### BEGIN AUTOGENERATED SECTION - MODIFICATIONS TO THIS CODE WILL BE OVERWRITTEN ### telemParse.py -### Autogenerated by firmware-libraries/SerialComms/python/telem_file_generator.py on Wed Mar 3 19:46:57 2021 +### Autogenerated by firmware-libraries/SerialComms/python/telem_file_generator.py on Fri Jul 1 00:08:57 2022 import time import struct @@ -9,8 +9,8 @@ class FlightComputer: def __init__(self): - self.packet_byte_size = 107 - self.num_items = 51 + self.packet_byte_size = 124 + self.num_items = 56 self.dict = {} self.units = {} @@ -67,6 +67,11 @@ def __init__(self): self.items[48] = 'gyro.x.avg' self.items[49] = 'gyro.y.avg' self.items[50] = 'gyro.z.avg' + self.items[51] = 'gps.time' + self.items[52] = 'gps.lat' + self.items[53] = 'gps.long' + self.items[54] = 'gps.alt' + self.items[55] = 'snr' self.units[self.items[0]] = "ul" self.units[self.items[1]] = "ul" @@ -119,6 +124,11 @@ def __init__(self): self.units[self.items[48]] = "deg/s" self.units[self.items[49]] = "deg/s" self.units[self.items[50]] = "deg/s" + self.units[self.items[51]] = "s" + self.units[self.items[52]] = "deg" + self.units[self.items[53]] = "deg" + self.units[self.items[54]] = "ft" + self.units[self.items[55]] = "dB" def parse_packet(self, packet): self.dict[self.items[0]] = int((float(struct.unpack("