eive-tmtc/eive_tmtc/tmtc/test.py

66 lines
2.1 KiB
Python
Raw Normal View History

2023-01-16 15:05:33 +01:00
from spacepackets.ecss import PusTelecommand, PusService
2022-11-02 19:49:07 +01:00
from tmtccmd.config import CoreServiceList
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
OpCodeEntry,
)
2023-01-19 13:29:01 +01:00
from tmtccmd.pus.s17_test import create_service_17_ping_command
2022-11-02 19:49:07 +01:00
from tmtccmd.tc import service_provider
from tmtccmd.tc.decorator import ServiceProviderParams
class OpCodes:
PING = "ping"
TRIGGER_EVENT = "trig_event"
PING_WITH_DATA = "ping_with_data"
class Info:
PING = "Simple Ping and Connection Test"
TRIGGER_EVENT = "Trigger an event"
PING_WITH_DATA = "Ping with data. Size of sent data is sent back"
@tmtc_definitions_provider
2022-11-02 19:52:55 +01:00
def add_test_defs(defs: TmtcDefinitionWrapper):
2022-11-02 19:49:07 +01:00
oce = OpCodeEntry()
oce.add(keys=OpCodes.PING, info=Info.PING)
oce.add(keys=OpCodes.TRIGGER_EVENT, info=Info.TRIGGER_EVENT)
oce.add(keys=OpCodes.PING_WITH_DATA, info=Info.PING_WITH_DATA)
defs.add_service(
2022-11-02 19:52:55 +01:00
name=CoreServiceList.SERVICE_17_ALT,
info="PUS 17 Test Service",
op_code_entry=oce,
2022-11-02 19:49:07 +01:00
)
2022-11-02 19:52:55 +01:00
@service_provider(CoreServiceList.SERVICE_17_ALT)
2022-11-02 19:49:07 +01:00
def pack_test_command(p: ServiceProviderParams):
info = p.info
q = p.queue_helper
if info.op_code == OpCodes.PING:
q.add_log_cmd("Sending PUS TC [17,1]")
2023-01-19 13:29:01 +01:00
q.add_pus_tc(create_service_17_ping_command())
2022-11-02 19:49:07 +01:00
if info.op_code == OpCodes.TRIGGER_EVENT:
q.add_log_cmd("Sending PUS TC Event Trigger [17, 128]")
2023-01-16 15:05:33 +01:00
q.add_pus_tc(PusTelecommand(service=PusService.S17_TEST, subservice=128))
2022-11-02 19:49:07 +01:00
if info.op_code == OpCodes.PING_WITH_DATA:
q.add_log_cmd("Sending Ping With Data, Size Reported Back [17, 129]")
while True:
data_size = int(input("Please specify data size [0-1024]: "))
if data_size < 0 or data_size > 1024:
print("Invalid data size")
break
2022-11-02 20:02:00 +01:00
dummy_data = bytearray()
next_byte = True
for i in range(data_size):
dummy_data.append(int(next_byte))
next_byte = not next_byte
2022-11-02 19:49:07 +01:00
q.add_pus_tc(
PusTelecommand(
2023-01-16 15:05:33 +01:00
service=PusService.S17_TEST, subservice=130, app_data=dummy_data
2022-11-02 19:49:07 +01:00
)
)