added another helper/wrapper type
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
All checks were successful
EIVE/-/pipeline/pr-main This commit looks good
This commit is contained in:
parent
6e87a0249c
commit
7cb5766a7a
21
eive_tmtc/pus_tm/hk.py
Normal file
21
eive_tmtc/pus_tm/hk.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import uuid
|
||||||
|
import dataclasses
|
||||||
|
import datetime
|
||||||
|
import sqlite3
|
||||||
|
from tmtccmd.pus.tm.s3_fsfw_hk import Service3FsfwTm
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass
|
||||||
|
class HkTmInfo:
|
||||||
|
packet_uuid: uuid.UUID
|
||||||
|
hk_packet: Service3FsfwTm
|
||||||
|
db_con: sqlite3.Connection
|
||||||
|
hk_data: bytes
|
||||||
|
|
||||||
|
@property
|
||||||
|
def packet_datetime(self) -> datetime.datetime:
|
||||||
|
return self.hk_packet.pus_tm.time_provider.as_datetime()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def set_id(self) -> int:
|
||||||
|
return self.hk_packet.set_id
|
@ -4,6 +4,7 @@ import logging
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
from typing import List, cast
|
from typing import List, cast
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
from eive_tmtc.pus_tm.hk import HkTmInfo
|
||||||
|
|
||||||
from eive_tmtc.tmtc.acs.acs_ctrl import handle_acs_ctrl_hk_data
|
from eive_tmtc.tmtc.acs.acs_ctrl import handle_acs_ctrl_hk_data
|
||||||
from eive_tmtc.tmtc.internal_err_reporter import handle_ier_hk_data
|
from eive_tmtc.tmtc.internal_err_reporter import handle_ier_hk_data
|
||||||
@ -112,6 +113,9 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here
|
|||||||
):
|
):
|
||||||
objb = object_id.as_bytes
|
objb = object_id.as_bytes
|
||||||
set_id = hk_packet.set_id
|
set_id = hk_packet.set_id
|
||||||
|
hk_info = HkTmInfo(
|
||||||
|
packet_uuid=packet_uuid, hk_packet=hk_packet, db_con=db, hk_data=hk_data
|
||||||
|
)
|
||||||
assert hk_packet.pus_tm.time_provider is not None
|
assert hk_packet.pus_tm.time_provider is not None
|
||||||
packet_dt = hk_packet.pus_tm.time_provider.as_date_time()
|
packet_dt = hk_packet.pus_tm.time_provider.as_date_time()
|
||||||
pw = PrintWrapper(printer.file_logger)
|
pw = PrintWrapper(printer.file_logger)
|
||||||
@ -119,12 +123,18 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here
|
|||||||
if objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
|
if objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
|
||||||
return handle_rw_hk_data(pw, object_id, set_id, hk_data)
|
return handle_rw_hk_data(pw, object_id, set_id, hk_data)
|
||||||
elif objb == obj_ids.SYRLINKS_HANDLER_ID:
|
elif objb == obj_ids.SYRLINKS_HANDLER_ID:
|
||||||
return handle_syrlinks_hk_data(pw=pw, hk_data=hk_data, set_id=set_id)
|
return handle_syrlinks_hk_data(
|
||||||
|
hk_info=hk_info,
|
||||||
|
pw=pw,
|
||||||
|
)
|
||||||
elif objb == obj_ids.IMTQ_HANDLER_ID:
|
elif objb == obj_ids.IMTQ_HANDLER_ID:
|
||||||
return handle_imtq_hk(pw=pw, hk_data=hk_data, set_id=set_id)
|
return handle_imtq_hk(pw=pw, hk_data=hk_data, set_id=set_id)
|
||||||
elif objb == obj_ids.GPS_CONTROLLER:
|
elif objb == obj_ids.GPS_CONTROLLER:
|
||||||
return handle_gps_data(
|
return handle_gps_data(
|
||||||
pw=pw, set_id=set_id, hk_data=hk_data, packet_time=packet_dt
|
pw=pw,
|
||||||
|
set_id=set_id,
|
||||||
|
hk_data=hk_data,
|
||||||
|
packet_time=packet_dt,
|
||||||
)
|
)
|
||||||
elif objb == obj_ids.PCDU_HANDLER_ID:
|
elif objb == obj_ids.PCDU_HANDLER_ID:
|
||||||
return handle_pcdu_hk(pw=pw, set_id=set_id, hk_data=hk_data)
|
return handle_pcdu_hk(pw=pw, set_id=set_id, hk_data=hk_data)
|
||||||
@ -134,9 +144,7 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here
|
|||||||
return handle_core_hk_data(pw=pw, hk_data=hk_data, set_id=set_id)
|
return handle_core_hk_data(pw=pw, hk_data=hk_data, set_id=set_id)
|
||||||
elif objb == obj_ids.PDU_1_HANDLER_ID:
|
elif objb == obj_ids.PDU_1_HANDLER_ID:
|
||||||
return handle_pdu_data(
|
return handle_pdu_data(
|
||||||
packet_uuid=packet_uuid,
|
hk_info=hk_info,
|
||||||
hk_packet=hk_packet,
|
|
||||||
con=db,
|
|
||||||
pw=pw,
|
pw=pw,
|
||||||
pdu_idx=1,
|
pdu_idx=1,
|
||||||
set_id=set_id,
|
set_id=set_id,
|
||||||
@ -144,9 +152,7 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here
|
|||||||
)
|
)
|
||||||
elif objb == obj_ids.PDU_2_HANDLER_ID:
|
elif objb == obj_ids.PDU_2_HANDLER_ID:
|
||||||
return handle_pdu_data(
|
return handle_pdu_data(
|
||||||
packet_uuid=packet_uuid,
|
hk_info=hk_info,
|
||||||
hk_packet=hk_packet,
|
|
||||||
con=db,
|
|
||||||
pw=pw,
|
pw=pw,
|
||||||
pdu_idx=2,
|
pdu_idx=2,
|
||||||
set_id=set_id,
|
set_id=set_id,
|
||||||
|
@ -8,30 +8,34 @@
|
|||||||
import enum
|
import enum
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
|
|
||||||
from eive_tmtc.pus_tm.defs import PrintWrapper
|
|
||||||
from eive_tmtc.tmtc.com.defs import Mode as ComMode
|
|
||||||
from eive_tmtc.config.definitions import CustomServiceList
|
|
||||||
from tmtccmd.config.tmtc import (
|
|
||||||
tmtc_definitions_provider,
|
|
||||||
TmtcDefinitionWrapper,
|
|
||||||
OpCodeEntry,
|
|
||||||
)
|
|
||||||
from tmtccmd.tmtc import DefaultPusQueueHelper
|
|
||||||
from tmtccmd.pus.tc.s3_fsfw_hk import (
|
|
||||||
make_sid,
|
|
||||||
create_request_one_diag_command,
|
|
||||||
create_request_one_hk_command,
|
|
||||||
create_enable_periodic_hk_command_with_interval_with_diag,
|
|
||||||
create_disable_periodic_hk_command_with_diag,
|
|
||||||
)
|
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
|
||||||
from tmtccmd.pus.s200_fsfw_mode import Mode, create_mode_command
|
|
||||||
from eive_tmtc.config.object_ids import SYRLINKS_HANDLER_ID
|
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from tmtccmd.util import ObjectIdU32
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
|
from tmtccmd.config.tmtc import (
|
||||||
|
OpCodeEntry,
|
||||||
|
TmtcDefinitionWrapper,
|
||||||
|
tmtc_definitions_provider,
|
||||||
|
)
|
||||||
|
from eive_tmtc.pus_tm.hk import HkTmInfo
|
||||||
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
|
||||||
|
from tmtccmd.pus.s200_fsfw_mode import Mode, create_mode_command
|
||||||
|
from tmtccmd.pus.tc.s3_fsfw_hk import (
|
||||||
|
create_disable_periodic_hk_command_with_diag,
|
||||||
|
create_enable_periodic_hk_command_with_interval_with_diag,
|
||||||
|
create_request_one_diag_command,
|
||||||
|
create_request_one_hk_command,
|
||||||
|
make_sid,
|
||||||
|
)
|
||||||
|
from tmtccmd.tmtc import DefaultPusQueueHelper
|
||||||
|
from tmtccmd.util import ObjectIdU32
|
||||||
|
|
||||||
|
from eive_tmtc.config.definitions import CustomServiceList
|
||||||
|
from eive_tmtc.config.object_ids import SYRLINKS_HANDLER_ID
|
||||||
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
||||||
|
from eive_tmtc.tmtc.com.defs import Mode as ComMode
|
||||||
|
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class SetId(enum.IntEnum):
|
class SetId(enum.IntEnum):
|
||||||
@ -258,18 +262,24 @@ def pack_syrlinks_command( # noqa C901: Complexity okay here.
|
|||||||
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
|
|
||||||
|
|
||||||
def handle_syrlinks_hk_data(pw: PrintWrapper, set_id: int, hk_data: bytes):
|
def handle_syrlinks_hk_data(
|
||||||
if set_id == SetId.RX_REGISTERS_DATASET:
|
hk_info: HkTmInfo,
|
||||||
return handle_syrlinks_rx_registers_dataset(pw, hk_data)
|
pw: PrintWrapper,
|
||||||
elif set_id == SetId.TX_REGISTERS_DATASET:
|
):
|
||||||
return handle_syrlinks_tx_registers_dataset(pw, hk_data)
|
if hk_info.set_id == SetId.RX_REGISTERS_DATASET:
|
||||||
elif set_id == SetId.TEMPERATURE_SET_ID:
|
return handle_syrlinks_rx_registers_dataset(hk_info, pw)
|
||||||
return handle_syrlinks_temp_dataset(pw, hk_data)
|
elif hk_info.set_id == SetId.TX_REGISTERS_DATASET:
|
||||||
|
return handle_syrlinks_tx_registers_dataset(hk_info, pw)
|
||||||
|
elif hk_info.set_id == SetId.TEMPERATURE_SET_ID:
|
||||||
|
return handle_syrlinks_temp_dataset(hk_info, pw)
|
||||||
else:
|
else:
|
||||||
pw.dlog(f"Service 3 TM: Syrlinks handler reply with unknown set ID {set_id}")
|
pw.dlog(
|
||||||
|
f"Service 3 TM: Syrlinks handler reply with unknown set ID {hk_info.set_id}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def handle_syrlinks_temp_dataset(pw: PrintWrapper, hk_data: bytes):
|
def handle_syrlinks_temp_dataset(hk_info: HkTmInfo, pw: PrintWrapper):
|
||||||
|
hk_data = hk_info.hk_data
|
||||||
if len(hk_data) < 8:
|
if len(hk_data) < 8:
|
||||||
raise ValueError("expected at least 8 bytes of HK data")
|
raise ValueError("expected at least 8 bytes of HK data")
|
||||||
temp_power_amplifier = struct.unpack("!f", hk_data[0:4])[0]
|
temp_power_amplifier = struct.unpack("!f", hk_data[0:4])[0]
|
||||||
@ -279,7 +289,11 @@ def handle_syrlinks_temp_dataset(pw: PrintWrapper, hk_data: bytes):
|
|||||||
pw.dlog(FsfwTmTcPrinter.get_validity_buffer(hk_data[8:], 2))
|
pw.dlog(FsfwTmTcPrinter.get_validity_buffer(hk_data[8:], 2))
|
||||||
|
|
||||||
|
|
||||||
def handle_syrlinks_rx_registers_dataset(pw: PrintWrapper, hk_data: bytes):
|
def handle_syrlinks_rx_registers_dataset(
|
||||||
|
hk_info: HkTmInfo,
|
||||||
|
pw: PrintWrapper,
|
||||||
|
):
|
||||||
|
hk_data = hk_info.hk_data
|
||||||
header_list = [
|
header_list = [
|
||||||
"RX Status",
|
"RX Status",
|
||||||
"RX Sensitivity",
|
"RX Sensitivity",
|
||||||
@ -342,14 +356,44 @@ def handle_syrlinks_rx_registers_dataset(pw: PrintWrapper, hk_data: bytes):
|
|||||||
pw.dlog(
|
pw.dlog(
|
||||||
FsfwTmTcPrinter.get_validity_buffer(validity_buffer=validity_buffer, num_vars=8)
|
FsfwTmTcPrinter.get_validity_buffer(validity_buffer=validity_buffer, num_vars=8)
|
||||||
)
|
)
|
||||||
pw.dlog(f"Carrier Detect: {carrier_detect}")
|
print(f"Carrier Detect: {carrier_detect}")
|
||||||
pw.dlog(f"Carrier Lock: {carrier_lock}")
|
print(f"Carrier Lock: {carrier_lock}")
|
||||||
pw.dlog(f"Data Lock (data clock recovery loop lock status): {data_lock}")
|
print(f"Data Lock (data clock recovery loop lock status): {data_lock}")
|
||||||
pw.dlog(f"Data Valid (valid if TEB < 10e-5): {data_valid}")
|
print(f"Data Valid (valid if TEB < 10e-5): {data_valid}")
|
||||||
pw.dlog(f"Data Lock (data clock recovery loop lock status): {data_lock}")
|
print(f"Data Lock (data clock recovery loop lock status): {data_lock}")
|
||||||
pw.dlog(f"RX AGC Inhibit: {rx_agc_inhibit}")
|
print(f"RX AGC Inhibit: {rx_agc_inhibit}")
|
||||||
pw.dlog(f"RX AGC: {rx_agc}")
|
print(f"RX AGC: {rx_agc}")
|
||||||
pw.dlog(f"Eb / E0RX [dB]: {eb_to_n0}")
|
print(f"Eb / E0RX [dB]: {eb_to_n0}")
|
||||||
|
cursor = hk_info.db_con.cursor()
|
||||||
|
cursor.execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE IF NOT EXISTS syrlinks_rx_regs(
|
||||||
|
packet_uuid TEXT PRIMARY KEY,
|
||||||
|
generation_time TEXT,
|
||||||
|
carrier_detect NUM,
|
||||||
|
carrier_lock NUM,
|
||||||
|
data_lock NUM,
|
||||||
|
data_valid NUM,
|
||||||
|
rx_agc_inhibit NUM,
|
||||||
|
rx_agc NUM,
|
||||||
|
eb_to_e0_rx NUM
|
||||||
|
)"""
|
||||||
|
)
|
||||||
|
cursor.execute(
|
||||||
|
"INSERT INTO syrlinks_rx_regs VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
||||||
|
(
|
||||||
|
str(hk_info.packet_uuid),
|
||||||
|
hk_info.hk_packet.pus_tm.time_provider.as_datetime(), # type: ignore
|
||||||
|
carrier_detect,
|
||||||
|
carrier_lock,
|
||||||
|
data_lock,
|
||||||
|
data_valid,
|
||||||
|
rx_agc_inhibit,
|
||||||
|
rx_agc,
|
||||||
|
eb_to_n0,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
hk_info.db_con.commit()
|
||||||
|
|
||||||
|
|
||||||
class TxConv(enum.IntEnum):
|
class TxConv(enum.IntEnum):
|
||||||
@ -375,11 +419,11 @@ WAVEFORM_STRINGS = ["OFF", "CW", "QPSK", "0QPSK", "PCM/PM", "PSK/PM", "BPSK"]
|
|||||||
|
|
||||||
|
|
||||||
def handle_syrlinks_tx_registers_dataset(
|
def handle_syrlinks_tx_registers_dataset(
|
||||||
|
hk_info: HkTmInfo,
|
||||||
pw: PrintWrapper,
|
pw: PrintWrapper,
|
||||||
hk_data: bytes,
|
|
||||||
):
|
):
|
||||||
header_list = ["TX Status Raw", "TX Waveform", "TX AGC value"]
|
header_list = ["TX Status Raw", "TX Waveform", "TX AGC value"]
|
||||||
tx_status = hk_data[0]
|
tx_status = hk_info.hk_data[0]
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
tx_conv = TxConv(tx_status & 0b111)
|
tx_conv = TxConv(tx_status & 0b111)
|
||||||
@ -397,9 +441,10 @@ def handle_syrlinks_tx_registers_dataset(
|
|||||||
logging.getLogger(__name__).warning(
|
logging.getLogger(__name__).warning(
|
||||||
f"invalid TX conf set {(tx_status >> 2) & 0b11}"
|
f"invalid TX conf set {(tx_status >> 2) & 0b11}"
|
||||||
)
|
)
|
||||||
tx_conf_set = -1
|
# Hack to make DB insertion work.
|
||||||
|
tx_conf_set = TxCfgSet.START_WITH_CURRENT_CFG
|
||||||
tx_clock_detect = (tx_status >> 4) & 0b1
|
tx_clock_detect = (tx_status >> 4) & 0b1
|
||||||
tx_waveform = hk_data[1]
|
tx_waveform = hk_info.hk_data[1]
|
||||||
waveform = tx_waveform & 0b1111
|
waveform = tx_waveform & 0b1111
|
||||||
try:
|
try:
|
||||||
waveform_str = WAVEFORM_STRINGS[waveform]
|
waveform_str = WAVEFORM_STRINGS[waveform]
|
||||||
@ -407,11 +452,11 @@ def handle_syrlinks_tx_registers_dataset(
|
|||||||
logging.getLogger(__name__).warning(f"Unknown waveform value {waveform}")
|
logging.getLogger(__name__).warning(f"Unknown waveform value {waveform}")
|
||||||
waveform_str = "Unknown"
|
waveform_str = "Unknown"
|
||||||
pcm_mode = (tx_waveform >> 4) & 0b1
|
pcm_mode = (tx_waveform >> 4) & 0b1
|
||||||
tx_agc_value = struct.unpack("!H", hk_data[2:4])[0]
|
tx_agc_value = struct.unpack("!H", hk_info.hk_data[2:4])[0]
|
||||||
tx_agc_inhibit = (tx_agc_value >> 15) & 0b1
|
tx_agc_inhibit = (tx_agc_value >> 15) & 0b1
|
||||||
tx_agc = tx_agc_value & 0xFFF
|
tx_agc = tx_agc_value & 0xFFF
|
||||||
content_list = [tx_status, tx_waveform, tx_agc_value]
|
content_list = [tx_status, tx_waveform, tx_agc_value]
|
||||||
validity_buffer = hk_data[4:]
|
validity_buffer = hk_info.hk_data[4:]
|
||||||
for header, content in zip(header_list, content_list):
|
for header, content in zip(header_list, content_list):
|
||||||
pw.dlog(f"{header}: {content}")
|
pw.dlog(f"{header}: {content}")
|
||||||
pw.dlog(
|
pw.dlog(
|
||||||
@ -419,10 +464,46 @@ def handle_syrlinks_tx_registers_dataset(
|
|||||||
)
|
)
|
||||||
# pw.dlog(f"TX CONV: {tx_conv!r}")
|
# pw.dlog(f"TX CONV: {tx_conv!r}")
|
||||||
# pw.dlog(f"TX DIFF (differential encoder enable): {tx_diff_encoder_enable}")
|
# pw.dlog(f"TX DIFF (differential encoder enable): {tx_diff_encoder_enable}")
|
||||||
pw.dlog(f"TX Status: {tx_status_status!r}")
|
print(f"TX Status: {tx_status_status!r}")
|
||||||
pw.dlog(f"TX Config Set: {tx_conf_set!r}")
|
print(f"TX Config Set: {tx_conf_set!r}")
|
||||||
pw.dlog(f"TX Clock Detect: {tx_clock_detect}")
|
print(f"TX Clock Detect: {tx_clock_detect}")
|
||||||
pw.dlog(f"Waveform: {waveform_str}")
|
print(f"Waveform: {waveform_str}")
|
||||||
pw.dlog(f"PCM Mode: {pcm_mode}")
|
print(f"PCM Mode: {pcm_mode}")
|
||||||
pw.dlog(f"TX AGC Inhibit: {tx_agc_inhibit}")
|
print(f"TX AGC Inhibit: {tx_agc_inhibit}")
|
||||||
pw.dlog(f"TX AGC: {tx_agc}")
|
print(f"TX AGC: {tx_agc}")
|
||||||
|
cursor = hk_info.db_con.cursor()
|
||||||
|
cursor.execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE IF NOT EXISTS syrlinks_tx_regs(
|
||||||
|
packet_uuid TEXT PRIMARY KEY,
|
||||||
|
generation_time TEXT,
|
||||||
|
tx_status NUM,
|
||||||
|
tx_status_str TEXT,
|
||||||
|
tx_cfg_set NUM,
|
||||||
|
tx_cfg_set_str TEXT,
|
||||||
|
tx_clock_detect NUM,
|
||||||
|
waveform NUM,
|
||||||
|
waveform_str TEXT,
|
||||||
|
pcm_mode NUM,
|
||||||
|
tx_agc_inhibut NUM,
|
||||||
|
tx_agc NUM
|
||||||
|
)"""
|
||||||
|
)
|
||||||
|
cursor.execute(
|
||||||
|
"INSERT INTO syrlinks_tx_regs VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
||||||
|
(
|
||||||
|
str(hk_info.packet_uuid),
|
||||||
|
hk_info.hk_packet.pus_tm.time_provider.as_datetime(), # type: ignore
|
||||||
|
tx_status_status,
|
||||||
|
tx_status_status.name,
|
||||||
|
tx_conf_set,
|
||||||
|
tx_conf_set.name,
|
||||||
|
tx_clock_detect,
|
||||||
|
waveform,
|
||||||
|
waveform_str,
|
||||||
|
pcm_mode,
|
||||||
|
tx_agc_inhibit,
|
||||||
|
tx_agc,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
hk_info.db_con.commit()
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import dataclasses
|
import dataclasses
|
||||||
from datetime import datetime
|
|
||||||
import struct
|
import struct
|
||||||
import logging
|
import logging
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from typing import List, Tuple
|
from typing import List, Tuple
|
||||||
from uuid import UUID
|
from eive_tmtc.pus_tm.hk import HkTmInfo
|
||||||
|
|
||||||
from eive_tmtc.tmtc.power.acu import acu_config_table_handler
|
from eive_tmtc.tmtc.power.acu import acu_config_table_handler
|
||||||
from eive_tmtc.tmtc.power.common_power import (
|
from eive_tmtc.tmtc.power.common_power import (
|
||||||
@ -13,7 +12,6 @@ from eive_tmtc.tmtc.power.common_power import (
|
|||||||
OBC_ENDIANNESS,
|
OBC_ENDIANNESS,
|
||||||
)
|
)
|
||||||
from eive_tmtc.tmtc.power.power import PcduSetIds
|
from eive_tmtc.tmtc.power.power import PcduSetIds
|
||||||
from tmtccmd.pus.tm.s3_fsfw_hk import Service3FsfwTm
|
|
||||||
from tmtccmd.util import ObjectIdBase
|
from tmtccmd.util import ObjectIdBase
|
||||||
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
|
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
|
||||||
from eive_tmtc.pus_tm.defs import PrintWrapper
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
||||||
@ -168,9 +166,7 @@ class PduData:
|
|||||||
|
|
||||||
def handle_pdu_data(
|
def handle_pdu_data(
|
||||||
hk_data: bytes,
|
hk_data: bytes,
|
||||||
hk_packet: Service3FsfwTm,
|
hk_info: HkTmInfo,
|
||||||
packet_uuid: UUID,
|
|
||||||
con: sqlite3.Connection,
|
|
||||||
pw: PrintWrapper,
|
pw: PrintWrapper,
|
||||||
pdu_idx: int,
|
pdu_idx: int,
|
||||||
set_id: int,
|
set_id: int,
|
||||||
@ -249,9 +245,7 @@ def handle_pdu_data(
|
|||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
handle_pdu_db_insertion(
|
handle_pdu_db_insertion(
|
||||||
con,
|
hk_info,
|
||||||
packet_uuid,
|
|
||||||
hk_packet.pus_tm.time_provider.as_datetime(), # type: ignore
|
|
||||||
pdu_idx,
|
pdu_idx,
|
||||||
PduData(
|
PduData(
|
||||||
boot_count,
|
boot_count,
|
||||||
@ -270,13 +264,11 @@ def handle_pdu_data(
|
|||||||
|
|
||||||
|
|
||||||
def handle_pdu_db_insertion(
|
def handle_pdu_db_insertion(
|
||||||
con: sqlite3.Connection,
|
hk_info: HkTmInfo,
|
||||||
packet_uuid: UUID,
|
|
||||||
packet_dt: datetime,
|
|
||||||
pdu_idx: int,
|
pdu_idx: int,
|
||||||
pdu_data: PduData,
|
pdu_data: PduData,
|
||||||
):
|
):
|
||||||
cursor = con.cursor()
|
cursor = hk_info.db_con.cursor()
|
||||||
if pdu_idx == 1:
|
if pdu_idx == 1:
|
||||||
tbl_base_name = "pdu1"
|
tbl_base_name = "pdu1"
|
||||||
channel_list = PDU1_CHANNELS_NAMES
|
channel_list = PDU1_CHANNELS_NAMES
|
||||||
@ -298,8 +290,8 @@ def handle_pdu_db_insertion(
|
|||||||
cursor.execute(
|
cursor.execute(
|
||||||
f"INSERT INTO {tbl_base_name} VALUES(?, ?, ?, ?, ?, ?, ?)",
|
f"INSERT INTO {tbl_base_name} VALUES(?, ?, ?, ?, ?, ?, ?)",
|
||||||
(
|
(
|
||||||
str(packet_uuid),
|
str(hk_info.packet_uuid),
|
||||||
packet_dt,
|
hk_info.packet_datetime,
|
||||||
pdu_data.boot_count,
|
pdu_data.boot_count,
|
||||||
pdu_data.batt_mode,
|
pdu_data.batt_mode,
|
||||||
pdu_data.temperature,
|
pdu_data.temperature,
|
||||||
@ -323,14 +315,14 @@ def handle_pdu_db_insertion(
|
|||||||
)"""
|
)"""
|
||||||
)
|
)
|
||||||
value_tuple = (
|
value_tuple = (
|
||||||
str(packet_uuid),
|
str(hk_info.packet_uuid),
|
||||||
packet_dt,
|
hk_info.packet_datetime,
|
||||||
pdu_data.out_enables[idx],
|
pdu_data.out_enables[idx],
|
||||||
pdu_data.voltages[idx],
|
pdu_data.voltages[idx],
|
||||||
pdu_data.currents[idx],
|
pdu_data.currents[idx],
|
||||||
)
|
)
|
||||||
cursor.execute(f"INSERT INTO {tbl_name} VALUES(?, ?, ?, ?, ?)", value_tuple)
|
cursor.execute(f"INSERT INTO {tbl_name} VALUES(?, ?, ?, ?, ?)", value_tuple)
|
||||||
con.commit()
|
hk_info.db_con.commit()
|
||||||
|
|
||||||
|
|
||||||
def handle_p60_hk_data(pw: PrintWrapper, set_id: int, hk_data: bytes):
|
def handle_p60_hk_data(pw: PrintWrapper, set_id: int, hk_data: bytes):
|
||||||
|
Loading…
Reference in New Issue
Block a user