1
0
Fork 0

decoders for skcube and strand1

Kudos to kerel!!
environments/stage/deployments/32
Corey Shields 2018-08-31 17:06:33 -04:00
parent 3098490633
commit 817459cc71
2 changed files with 982 additions and 0 deletions

View File

@ -0,0 +1,283 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
from pkg_resources import parse_version
from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
if parse_version(ks_version) < parse_version('0.7'):
raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
class Skcube(KaitaiStruct):
"""
.. seealso::
Source - http://www.skcube.sk/wp-content/uploads/2016/06/skcube_data_structures.xlsx
"""
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.ax25header = self._io.read_bytes(16)
self.packet_type = self._io.read_u1()
_on = self.packet_type
if _on == 4:
self.body = self._root.Block4Cam(self._io, self, self._root)
elif _on == 6:
self.body = self._root.Block6Exp(self._io, self, self._root)
elif _on == 3:
self.body = self._root.Block3Com(self._io, self, self._root)
elif _on == 5:
self.body = self._root.Block5Pwr(self._io, self, self._root)
elif _on == 2:
self.body = self._root.Block2Adcs(self._io, self, self._root)
elif _on == 50:
self.body = self._root.BlockMessage(self._io, self, self._root)
class Block5Pwr(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.timestamp = self._io.read_u4le()
self.fulluptime = self._io.read_u4le()
self.uptime = self._io.read_u4le()
self.active_procesor = self._io.read_u2le()
self.fw_version = self._io.read_u2le()
self.number_of_reboots = self._io.read_u2le()
self.countcomerrors = self._io.read_u2le()
self.countpsuerrors = self._io.read_u2le()
self.solar_j_current = self._io.read_s2le()
self.solar_k_current = self._io.read_s2le()
self.solar_l_current = self._io.read_s2le()
self.solar_m_current = self._io.read_s2le()
self.solar_u_current = self._io.read_s2le()
self.solar_d_current = self._io.read_s2le()
self.solar_j_temp = self._io.read_s2le()
self.solar_k_temp = self._io.read_s2le()
self.solar_l_temp = self._io.read_s2le()
self.solar_m_temp = self._io.read_s2le()
self.solar_u_temp = self._io.read_s2le()
self.solar_d_temp = self._io.read_s2le()
self.battery_a_voltage = self._io.read_s2le()
self.battery_b_voltage = self._io.read_s2le()
self.battery_temp = self._io.read_s2le()
self.battery_a_capacity = self._io.read_u2le()
self.battery_b_capacity = self._io.read_u2le()
self.bat_capacity = self._io.read_u2le()
self.battery_a_current = self._io.read_s2le()
self.battery_b_current = self._io.read_s2le()
self.battery_a_min_current = self._io.read_s2le()
self.battery_b_min_current = self._io.read_s2le()
self.battery_a_max_current = self._io.read_s2le()
self.battery_b_max_current = self._io.read_s2le()
self.battery_a_avg_current = self._io.read_s2le()
self.battery_b_avg_current = self._io.read_s2le()
self.chds_min_current = self._io.read_s2le()
self.chds_max_current = self._io.read_s2le()
self.chds_avg_current = self._io.read_s2le()
self.chds_actual_current = self._io.read_s2le()
self.com_min_current = self._io.read_s2le()
self.com_max_current = self._io.read_s2le()
self.com_avg_current = self._io.read_s2le()
self.com_actual_current = self._io.read_s2le()
self.cam_min_current = self._io.read_s2le()
self.cam_max_current = self._io.read_s2le()
self.cam_avg_current = self._io.read_s2le()
self.cam_actual_current = self._io.read_s2le()
self.exp_min_current = self._io.read_s2le()
self.exp_max_current = self._io.read_s2le()
self.exp_avg_current = self._io.read_s2le()
self.exp_actual_current = self._io.read_s2le()
self.adcs_min_current = self._io.read_s2le()
self.adcs_max_current = self._io.read_s2le()
self.adcs_avg_current = self._io.read_s2le()
self.adcs_actual_current = self._io.read_s2le()
self.sys_voltage_min = self._io.read_u2le()
self.sys_voltage_max = self._io.read_u2le()
self.sys_voltage_actual = self._io.read_u2le()
self.nadprudy = self._io.read_u2le()
self.stav_pripojenia = self._io.read_u2le()
self.ts_temp = self._io.read_s2le()
self.countpacket = self._io.read_u4le()
self.psu_error = self._io.read_u2le()
self.psu_lasterror = self._io.read_u2le()
self.com_error = self._io.read_u2le()
self.com_lasterror = self._io.read_u2le()
self.cdhs_i_limit = self._io.read_u1()
self.com_i_limit = self._io.read_u1()
self.cam_i_limit = self._io.read_u1()
self.adcs_i_limit = self._io.read_u1()
self.exp_i_limit = self._io.read_u1()
self.cam_uv_limit = self._io.read_u1()
self.exp_uv_limit = self._io.read_u1()
self.adcs_uv_limit = self._io.read_u1()
self.bat1_vmax = self._io.read_s2le()
self.bat1_vmin = self._io.read_s2le()
self.bat2_vmax = self._io.read_s2le()
self.bat2_vmin = self._io.read_s2le()
self.endofdata = self._io.read_u2le()
class Block2Adcs(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adcs_mode = self._io.read_u1()
self.bd_k = self._io.read_u1()
self.max_pwm_coil_x = self._io.read_u1()
self.max_pwm_coil_y = self._io.read_u1()
self.max_pwm_coil_z = self._io.read_u1()
self.sun_x_p_x = self._io.read_s2le()
self.sun_x_p_y = self._io.read_s2le()
self.sun_x_p_irradiation = self._io.read_u1()
self.sun_x_m_x = self._io.read_s2le()
self.sun_x_m_y = self._io.read_s2le()
self.sun_x_m_irradiation = self._io.read_u1()
self.sun_y_p_x = self._io.read_s2le()
self.sun_y_p_y = self._io.read_s2le()
self.sun_y_p_irradiation = self._io.read_u1()
self.sun_y_m_x = self._io.read_s2le()
self.sun_y_m_y = self._io.read_s2le()
self.sun_y_m_irradiation = self._io.read_u1()
self.sun_z_p_x = self._io.read_s2le()
self.sun_z_p_y = self._io.read_s2le()
self.sun_z_p_irradiation = self._io.read_u1()
self.sun_z_m_x = self._io.read_s2le()
self.sun_z_m_y = self._io.read_s2le()
self.sun_z_m_irradiation = self._io.read_u1()
self.gyroscope_x = self._io.read_u2le()
self.gyroscope_y = self._io.read_u2le()
self.gyroscope_z = self._io.read_u2le()
self.gyroscope_temp = self._io.read_u2le()
self.magnetometer_1_x = self._io.read_u2le()
self.magnetometer_1_y = self._io.read_u2le()
self.magnetometer_1_z = self._io.read_u2le()
self.magnetometer_1_temp = self._io.read_u2le()
self.magnetometer_2_x = self._io.read_u2le()
self.magnetometer_2_y = self._io.read_u2le()
self.magnetometer_2_z = self._io.read_u2le()
self.magnetometer_2_temp = self._io.read_u2le()
self.accelerometer_x = self._io.read_u2le()
self.accelerometer_y = self._io.read_u2le()
self.accelerometer_z = self._io.read_u2le()
self.accel_temp = self._io.read_u2le()
self.earth_sensor_x_p = self._io.read_u2le()
self.earth_sensor_x_m = self._io.read_u2le()
self.earth_sensor_y_p = self._io.read_u2le()
self.earth_sensor_y_m = self._io.read_u2le()
class Block3Com(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.timestamp = self._io.read_u4le()
self.fwversion = self._io.read_u2le()
self.activecom = self._io.read_u1()
self.digipeatermode = self._io.read_u1()
self.noofreboots = self._io.read_u2le()
self.outputreflpower = self._io.read_u2le()
self.outputforwardpower = self._io.read_u2le()
self.outputreflpowercw = self._io.read_u2le()
self.outputforwardpowercw = self._io.read_u2le()
self.rssi = self._io.read_u2le()
self.rssinoise = self._io.read_u2le()
self.mcutemperature = self._io.read_s1()
self.patemperature = self._io.read_s1()
self.cwbeaconsent = self._io.read_u2le()
self.packetsent = self._io.read_u2le()
self.correctpacketsreceived = self._io.read_u2le()
self.brokenpacketsreceived = self._io.read_u2le()
self.comprotocolerror = self._io.read_u2le()
self.gsprotocolerror = self._io.read_u2le()
self.txdisablestatus = self._io.read_u1()
self.orbittime = self._io.read_u1()
self.timeslotstart = self._io.read_u1()
self.timeslotend = self._io.read_u1()
class Block6Exp(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.timestamp = self._io.read_u4le()
self.fw_version = self._io.read_u2le()
self.number_of_reboots = self._io.read_u2le()
self.active_adc_channel = self._io.read_u1()
self.fft_gain = self._io.read_u1()
self.low_frequency = self._io.read_u1()
self.high_frequency = self._io.read_u1()
self.max_hold_sec = self._io.read_u2le()
self.slow_position = self._io.read_u2le()
self.postring_samples = self._io.read_u2le()
self.psd = self._io.read_u2le()
self.psd_max = self._io.read_u2le()
self.psd_selected = self._io.read_u2le()
self.psd_selected_max = self._io.read_u2le()
self.peak_freq = self._io.read_u2le()
self.peak_amp = self._io.read_u2le()
self.psd_treshold = self._io.read_u2le()
self.psd_selected_events = self._io.read_u2le()
self.events_position = self._io.read_u1()
self.event_time_1 = self._io.read_u4le()
self.event_time_2 = self._io.read_u4le()
self.event_time_3 = self._io.read_u4le()
self.event_time_4 = self._io.read_u4le()
self.event_time_5 = self._io.read_u4le()
self.event_time_6 = self._io.read_u4le()
self.event_time_7 = self._io.read_u4le()
self.event_time_8 = self._io.read_u4le()
self.event_time_9 = self._io.read_u4le()
self.event_time_10 = self._io.read_u4le()
class BlockMessage(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.message = (self._io.read_bytes_full()).decode(u"utf-8")
class Block4Cam(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.timestamp = self._io.read_u4le()
self.fw_version = self._io.read_u2le()
self.number_of_reboots = self._io.read_u2le()
self.jpeg_compression = self._io.read_u1()
self.jpeg_scale = self._io.read_u1()
self.mcu_temperature = self._io.read_s1()
self.vref_internal = self._io.read_u2le()
self.packets_sent = self._io.read_u2le()
self.cw_sent = self._io.read_u2le()
self.flash_image_position = self._io.read_u1()
self.tx_datarate = self._io.read_u1()

View File

@ -0,0 +1,699 @@
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
from pkg_resources import parse_version
from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
if parse_version(ks_version) < parse_version('0.7'):
raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
class Strand(KaitaiStruct):
"""
.. seealso::
Source - https://amsat-uk.org/satellites/telemetry/strand-1/strand-1-telemetry/
"""
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.hdlc_flag = self._io.ensure_fixed_contents(b"\xC0\x80")
self.seq_no = self._io.read_u1()
self.length = self._io.read_u1()
self.packet_type = self._io.read_u1()
_on = self.packet_type
if _on == 1:
self.body = self._root.ModemBeaconTlm(self._io, self, self._root)
elif _on == 2:
self.body = self._root.ObcBeaconTlm(self._io, self, self._root)
self.crc_16_ccit = self._io.read_bytes(2)
class ChAdc1PyArrayCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc1_py_array_current = self._io.read_u1()
class ChSwitch1Ppt12Status(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_1_ppt_1_2_status = self._io.read_u1()
class ChAdc9ArrayPairZVoltage(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc9_array_pair_z_voltage = self._io.read_u1()
class ChBattery1CurrentDirection(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_1_current_direction = self._io.read_u1()
class ModemBeaconTlm(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.channel = self._io.read_u1()
_on = self.channel
if _on == 224:
self.data = self._root.ChTimeSinceLastObcI2cMessage(self._io, self, self._root)
elif _on == 227:
self.data = self._root.ChPacketsUpDroppedCount(self._io, self, self._root)
elif _on == 226:
self.data = self._root.ChPacketsDownCount(self._io, self, self._root)
elif _on == 225:
self.data = self._root.ChPacketsUpCount(self._io, self, self._root)
elif _on == 228:
self.data = self._root.ChPacketsDownDroppedCount(self._io, self, self._root)
class ChMagnetometerSet1(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.magnetometer_set_1 = self._io.read_u1()
class CsBattery(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.i2c_node_address = self._io.read_u1()
_on = self.i2c_node_address
if _on == 14:
self.node = self._root.ChAdc14PxArrayTemperature(self._io, self, self._root)
elif _on == 10:
self.node = self._root.ChAdc10PzArrayCurrent(self._io, self, self._root)
elif _on == 17:
self.node = self._root.ChAdc17BatteryBusCurrent(self._io, self, self._root)
elif _on == 4:
self.node = self._root.ChAdc4MyArrayCurrent(self._io, self, self._root)
elif _on == 6:
self.node = self._root.ChAdc6ArrayPairXVoltage(self._io, self, self._root)
elif _on == 7:
self.node = self._root.ChAdc7MxArrayCurrent(self._io, self, self._root)
elif _on == 1:
self.node = self._root.ChAdc1PyArrayCurrent(self._io, self, self._root)
elif _on == 27:
self.node = self._root.ChAdc2733vBusCurrent(self._io, self, self._root)
elif _on == 13:
self.node = self._root.ChAdc13PxArrayCurrent(self._io, self, self._root)
elif _on == 11:
self.node = self._root.ChAdc11PzArrayTemperature(self._io, self, self._root)
elif _on == 3:
self.node = self._root.ChAdc3ArrayPairYVoltage(self._io, self, self._root)
elif _on == 5:
self.node = self._root.ChAdc5MyArrayTemperature(self._io, self, self._root)
elif _on == 8:
self.node = self._root.ChAdc8MxArrayTemperature(self._io, self, self._root)
elif _on == 9:
self.node = self._root.ChAdc9ArrayPairZVoltage(self._io, self, self._root)
elif _on == 26:
self.node = self._root.ChAdc265vBusCurrent(self._io, self, self._root)
elif _on == 31:
self.node = self._root.ChAdc31MzArrayCurrent(self._io, self, self._root)
elif _on == 2:
self.node = self._root.ChAdc2PyArrayTemperature(self._io, self, self._root)
elif _on == 30:
self.node = self._root.ChAdc30MzArrayTemperature(self._io, self, self._root)
class ChAdc3ArrayPairYVoltage(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc3_array_pair_y_voltage = self._io.read_u1()
class ChSwitch9SolarPanelDeployFire(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_9_solar_panel_deploy_fire = self._io.read_u1()
class ChBattery1VoltageV(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_1_voltage_v = self._io.read_u1()
class ChAdc4MyArrayCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc4_my_array_current = self._io.read_u1()
class ChAdc2PyArrayTemperature(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc2_py_array_temperature = self._io.read_u1()
class ChUnixTimeLittleEndian(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.unix_time_little_endian = self._io.read_u1()
class ChTimeSinceLastObcI2cMessage(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.time_since_last_obc_i2c_message = self._io.read_u1()
class ChSwitch0PptPowerSupplyStatus(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_0_ppt_power_supply_status = self._io.read_u1()
class ChBattery0CurrentDirection(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_0_current_direction = self._io.read_u1()
class ObcData(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.i2c_node_address = self._io.read_u1()
_on = self.i2c_node_address
if _on == 12:
self.node = self._root.ChUnixTimeLittleEndian(self._io, self, self._root)
class ChMagnetometerSet2(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.magnetometer_set_2 = self._io.read_u1()
class ChAdc2733vBusCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc27_33v_bus_current = self._io.read_u1()
class ChSwitch6Sgr05Status(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_6_sgr05_status = self._io.read_u1()
class CsEps(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.i2c_node_address = self._io.read_u1()
_on = self.i2c_node_address
if _on == 0:
self.node = self._root.ChBattery0CurrentDirection(self._io, self, self._root)
elif _on == 4:
self.node = self._root.ChBattery0TemperatureDegC(self._io, self, self._root)
elif _on == 6:
self.node = self._root.ChBattery1CurrentMa(self._io, self, self._root)
elif _on == 1:
self.node = self._root.ChBattery0CurrentMa(self._io, self, self._root)
elif _on == 3:
self.node = self._root.ChBattery0VoltageV(self._io, self, self._root)
elif _on == 5:
self.node = self._root.ChBattery1CurrentDirection(self._io, self, self._root)
elif _on == 8:
self.node = self._root.ChBattery1VoltageV(self._io, self, self._root)
elif _on == 9:
self.node = self._root.ChBattery1TemperatureDegC(self._io, self, self._root)
class ChAdc7MxArrayCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc7_mx_array_current = self._io.read_u1()
class ChAdc31MzArrayCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc31_mz_array_current = self._io.read_u1()
class ChSwitch8SolarPanelDeployArm(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_8_solar_panel_deploy_arm = self._io.read_u1()
class ChAdc5MyArrayTemperature(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc5_my_array_temperature = self._io.read_u1()
class ChPacketsDownDroppedCount(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.packets_down_dropped_count = self._io.read_u1()
class ObcBeaconTlm(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.i2c_node_address = self._io.read_u1()
_on = self.i2c_node_address
if _on == 45:
self.node = self._root.CsBattery(self._io, self, self._root)
elif _on == 137:
self.node = self._root.Magnetometers(self._io, self, self._root)
elif _on == 44:
self.node = self._root.CsEps(self._io, self, self._root)
elif _on == 102:
self.node = self._root.SwitchBoard(self._io, self, self._root)
elif _on == 128:
self.node = self._root.ObcData(self._io, self, self._root)
class ChPacketsUpCount(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.packets_up_count = self._io.read_u1()
class ChSwitch3WarpValveStatus(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_3_warp_valve_status = self._io.read_u1()
class ChBattery0VoltageV(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_0_voltage_v = self._io.read_u1()
class ChAdc13PxArrayCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc13_px_array_current = self._io.read_u1()
class ChAdc30MzArrayTemperature(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc30_mz_array_temperature = self._io.read_u1()
class ChAdc8MxArrayTemperature(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc8_mx_array_temperature = self._io.read_u1()
class ChAdc14PxArrayTemperature(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc14_px_array_temperature = self._io.read_u1()
class ChBattery0CurrentMa(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_0_current_ma = self._io.read_u1()
class ChAdc6ArrayPairXVoltage(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc6_array_pair_x_voltage = self._io.read_u1()
class ChSwitch2Phone5vWebcam(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_2_phone_5v_webcam = self._io.read_u1()
class ChPacketsDownCount(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.packets_down_count = self._io.read_u1()
class ChAdc10PzArrayCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc10_pz_array_current = self._io.read_u1()
class ChAdc17BatteryBusCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc17_battery_bus_current = self._io.read_u1()
class ChAdc11PzArrayTemperature(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc11_pz_array_temperature = self._io.read_u1()
class ChSwitch4WarpHeaterStatus(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_4_warp_heater_status = self._io.read_u1()
class ChPacketsUpDroppedCount(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.packets_up_dropped_count = self._io.read_u1()
class ChSwitch7ReactionWheels(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_7_reaction_wheels = self._io.read_u1()
class ChBattery1TemperatureDegC(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_1_temperature_deg_c = self._io.read_u1()
class ChSwitch5DigiWi9cStatus(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.switch_5_digi_wi9c_status = self._io.read_u1()
class SwitchBoard(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.i2c_node_address = self._io.read_u1()
_on = self.i2c_node_address
if _on == 159:
self.node = self._root.ChSwitch6Sgr05Status(self._io, self, self._root)
elif _on == 169:
self.node = self._root.ChSwitch8SolarPanelDeployArm(self._io, self, self._root)
elif _on == 144:
self.node = self._root.ChSwitch3WarpValveStatus(self._io, self, self._root)
elif _on == 149:
self.node = self._root.ChSwitch4WarpHeaterStatus(self._io, self, self._root)
elif _on == 172:
self.node = self._root.ChSwitch9SolarPanelDeployFire(self._io, self, self._root)
elif _on == 164:
self.node = self._root.ChSwitch7ReactionWheels(self._io, self, self._root)
elif _on == 129:
self.node = self._root.ChSwitch0PptPowerSupplyStatus(self._io, self, self._root)
elif _on == 134:
self.node = self._root.ChSwitch1Ppt12Status(self._io, self, self._root)
elif _on == 139:
self.node = self._root.ChSwitch2Phone5vWebcam(self._io, self, self._root)
elif _on == 154:
self.node = self._root.ChSwitch5DigiWi9cStatus(self._io, self, self._root)
class ChBattery0TemperatureDegC(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_0_temperature_deg_c = self._io.read_u1()
class ChAdc265vBusCurrent(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.adc26_5v_bus_current = self._io.read_u1()
class Magnetometers(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.i2c_node_address = self._io.read_u1()
_on = self.i2c_node_address
if _on == 3:
self.node = self._root.ChMagnetometerSet1(self._io, self, self._root)
elif _on == 5:
self.node = self._root.ChMagnetometerSet2(self._io, self, self._root)
class ChBattery1CurrentMa(KaitaiStruct):
def __init__(self, _io, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root if _root else self
self._read()
def _read(self):
self.battery_1_current_ma = self._io.read_u1()