----------------------------------------
-----------Sun Devil Rocketry-----------
-----------Auto Test Results------------
----------------------------------------

--General Build Information--
Test Name:        flight_int
Test Type:        SW Integration
Run Date:         October 10, 2026
Run Time:         23:28:13

----------------------------------------
----------------Results-----------------
----------------------------------------

"Check that connect completed successfully (HW Opcode)."
Actual: "b'\x05'" | Expected: "b'\x05'"

"Check that connect completed successfully (FW Opcode)."
Actual: "b'\x06'" | Expected: "b'\x06'"

"The parser object was created successfully."
Actual: "<class 'SDECv2.Parser.parser.Parser'>" | Expected: "<class 'SDECv2.Parser.parser.Parser'>"

"Check that connect completed successfully (GS HW Opcode)."
Actual: "b'\x10'" | Expected: "b'\x10'"

"Check that connect completed successfully (GS FW Opcode)."
Actual: "b'\x11'" | Expected: "b'\x11'"

"Dashboard Dump message is not None."
Actual: "True" | Expected: "True"

"Vehicle ID message received."
Actual: "True" | Expected: "True"

"Check that connect completed successfully (HW Opcode)."
Actual: "b'\x05'" | Expected: "b'\x05'"

"Check that connect completed successfully (FW Opcode)."
Actual: "b'\x06'" | Expected: "b'\x06'"

"Feature Bitmasks Equivalent"
Actual: "{'Data Logging': True, 'Dual Deploy': False, 'Active Roll Control': False, 'Active Pitch Yaw Control': False, 'Wireless Transmission': True, 'Launch Detect Baro': True, 'Launch Detect Accel': True, 'GPS': True}" | Expected: "{'Data Logging': True, 'Dual Deploy': False, 'Active Roll Control': False, 'Active Pitch Yaw Control': False, 'Wireless Transmission': True, 'Launch Detect Baro': True, 'Launch Detect Accel': True, 'GPS': True}"

"Feature Bitmasks Equivalent"
Actual: "{'conv': True, 'state_estim': True, 'gps': True, 'canard': True}" | Expected: "{'conv': True, 'state_estim': True, 'gps': True, 'canard': True}"

"Config Data Equivalent"
Actual: "[{'Name': 'Sensor calib samples', 'Size': 2, 'Data Type': 'int', 'Value': 20}, {'Name': 'LD timeout', 'Size': 2, 'Data Type': 'int', 'Value': 30000}, {'Name': 'LD baro threshold', 'Size': 2, 'Data Type': 'int', 'Value': 300}, {'Name': 'LD accel threshold', 'Size': 1, 'Data Type': 'int', 'Value': 4}, {'Name': 'LD accel samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'LD baro samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'Pad byte', 'Size': 1, 'Data Type': 'int', 'Value': 0}, {'Name': 'Flash rate limit', 'Size': 2, 'Data Type': 'int', 'Value': 0}, {'Name': 'Apogee detect samples', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AC max deflect angle', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AR Delay after launch', 'Size': 2, 'Data Type': 'int', 'Value': 4000}, {'Name': 'AC Roll PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 2.0}, {'Name': 'AC Roll PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC Roll PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}]" | Expected: "[{'Name': 'Sensor calib samples', 'Size': 2, 'Data Type': 'int', 'Value': 20}, {'Name': 'LD timeout', 'Size': 2, 'Data Type': 'int', 'Value': 30000}, {'Name': 'LD baro threshold', 'Size': 2, 'Data Type': 'int', 'Value': 300}, {'Name': 'LD accel threshold', 'Size': 1, 'Data Type': 'int', 'Value': 4}, {'Name': 'LD accel samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'LD baro samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'Pad byte', 'Size': 1, 'Data Type': 'int', 'Value': 0}, {'Name': 'Flash rate limit', 'Size': 2, 'Data Type': 'int', 'Value': 0}, {'Name': 'Apogee detect samples', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AC max deflect angle', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AR Delay after launch', 'Size': 2, 'Data Type': 'int', 'Value': 4000}, {'Name': 'AC Roll PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 2.0}, {'Name': 'AC Roll PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC Roll PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}]"

"Flash extract data matches downloaded preset."
Actual: "{'Feature Bitmask': {'Data Logging': True, 'Dual Deploy': False, 'Active Roll Control': False, 'Active Pitch Yaw Control': False, 'Wireless Transmission': True, 'Launch Detect Baro': True, 'Launch Detect Accel': True, 'GPS': True}, 'Data Bitmask': {'conv': True, 'state_estim': True, 'gps': True, 'canard': True}, 'Config Data': [{'Name': 'Sensor calib samples', 'Size': 2, 'Data Type': 'int', 'Value': 20}, {'Name': 'LD timeout', 'Size': 2, 'Data Type': 'int', 'Value': 30000}, {'Name': 'LD baro threshold', 'Size': 2, 'Data Type': 'int', 'Value': 300}, {'Name': 'LD accel threshold', 'Size': 1, 'Data Type': 'int', 'Value': 4}, {'Name': 'LD accel samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'LD baro samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'Pad byte', 'Size': 1, 'Data Type': 'int', 'Value': 0}, {'Name': 'Flash rate limit', 'Size': 2, 'Data Type': 'int', 'Value': 0}, {'Name': 'Apogee detect samples', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AC max deflect angle', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AR Delay after launch', 'Size': 2, 'Data Type': 'int', 'Value': 4000}, {'Name': 'AC Roll PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 2.0}, {'Name': 'AC Roll PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC Roll PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}], 'LoRA Data': [{'Name': 'Spreading Factor', 'Size': 1, 'Data Type': 'int', 'Value': 8}, {'Name': 'Bandwidth', 'Size': 1, 'Data Type': 'int', 'Value': 8}, {'Name': 'Error Coding', 'Size': 1, 'Data Type': 'int', 'Value': 6}, {'Name': 'Enable High Power Mode', 'Size': 1, 'Data Type': 'int', 'Value': 1}, {'Name': 'Frequency', 'Size': 4, 'Data Type': 'int', 'Value': 915000}], 'IMU Data': [{'Name': 'Accel x offset', 'Size': 4, 'Data Type': 'float', 'Value': 9.777420997619629}, {'Name': 'Accel y offset', 'Size': 4, 'Data Type': 'float', 'Value': 0.008134888485074043}, {'Name': 'Accel z offset', 'Size': 4, 'Data Type': 'float', 'Value': -0.0119630740955472}, {'Name': 'Gyro x offset', 'Size': 4, 'Data Type': 'float', 'Value': -4.245059490203857}, {'Name': 'Gyro y offset', 'Size': 4, 'Data Type': 'float', 'Value': 0.8606087565422058}, {'Name': 'Gyro z offset', 'Size': 4, 'Data Type': 'float', 'Value': 1.461814284324646}], 'Baro Data': [{'Name': 'Baro pres offset', 'Size': 4, 'Data Type': 'float', 'Value': 97076.828125}, {'Name': 'Baro temp offset', 'Size': 4, 'Data Type': 'float', 'Value': 32.007774353027344}], 'Servo Data': [{'Name': 'Servo 1 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}, {'Name': 'Servo 2 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}, {'Name': 'Servo 3 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}, {'Name': 'Servo 4 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}]}" | Expected: "{'Feature Bitmask': {'Data Logging': True, 'Dual Deploy': False, 'Active Roll Control': False, 'Active Pitch Yaw Control': False, 'Wireless Transmission': True, 'Launch Detect Baro': True, 'Launch Detect Accel': True, 'GPS': True}, 'Data Bitmask': {'conv': True, 'state_estim': True, 'gps': True, 'canard': True}, 'Config Data': [{'Name': 'Sensor calib samples', 'Size': 2, 'Data Type': 'int', 'Value': 20}, {'Name': 'LD timeout', 'Size': 2, 'Data Type': 'int', 'Value': 30000}, {'Name': 'LD baro threshold', 'Size': 2, 'Data Type': 'int', 'Value': 300}, {'Name': 'LD accel threshold', 'Size': 1, 'Data Type': 'int', 'Value': 4}, {'Name': 'LD accel samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'LD baro samples', 'Size': 1, 'Data Type': 'int', 'Value': 5}, {'Name': 'Pad byte', 'Size': 1, 'Data Type': 'int', 'Value': 0}, {'Name': 'Flash rate limit', 'Size': 2, 'Data Type': 'int', 'Value': 0}, {'Name': 'Apogee detect samples', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AC max deflect angle', 'Size': 1, 'Data Type': 'int', 'Value': 10}, {'Name': 'AR Delay after launch', 'Size': 2, 'Data Type': 'int', 'Value': 4000}, {'Name': 'AC Roll PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 2.0}, {'Name': 'AC Roll PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC Roll PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID P const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID I const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}, {'Name': 'AC P/Y PID D const', 'Size': 4, 'Data Type': 'float', 'Value': 0.0}], 'LoRA Data': [{'Name': 'Spreading Factor', 'Size': 1, 'Data Type': 'int', 'Value': 8}, {'Name': 'Bandwidth', 'Size': 1, 'Data Type': 'int', 'Value': 8}, {'Name': 'Error Coding', 'Size': 1, 'Data Type': 'int', 'Value': 6}, {'Name': 'Enable High Power Mode', 'Size': 1, 'Data Type': 'int', 'Value': 1}, {'Name': 'Frequency', 'Size': 4, 'Data Type': 'int', 'Value': 915000}], 'IMU Data': [{'Name': 'Accel x offset', 'Size': 4, 'Data Type': 'float', 'Value': 9.777420997619629}, {'Name': 'Accel y offset', 'Size': 4, 'Data Type': 'float', 'Value': 0.008134888485074043}, {'Name': 'Accel z offset', 'Size': 4, 'Data Type': 'float', 'Value': -0.0119630740955472}, {'Name': 'Gyro x offset', 'Size': 4, 'Data Type': 'float', 'Value': -4.245059490203857}, {'Name': 'Gyro y offset', 'Size': 4, 'Data Type': 'float', 'Value': 0.8606087565422058}, {'Name': 'Gyro z offset', 'Size': 4, 'Data Type': 'float', 'Value': 1.461814284324646}], 'Baro Data': [{'Name': 'Baro pres offset', 'Size': 4, 'Data Type': 'float', 'Value': 97076.828125}, {'Name': 'Baro temp offset', 'Size': 4, 'Data Type': 'float', 'Value': 32.007774353027344}], 'Servo Data': [{'Name': 'Servo 1 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}, {'Name': 'Servo 2 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}, {'Name': 'Servo 3 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}, {'Name': 'Servo 4 RP', 'Size': 1, 'Data Type': 'int', 'Value': 45}]}"

"First save bit present in extracted data."
Actual: "1" | Expected: "1"

"Second save bit present in extracted data."
Actual: "1" | Expected: "1"


----------------------------------------
-------------Test Complete--------------
----------------------------------------
Passes: 15
Fails:  0
Result: PASS
----------------------------------------