-
IT SEEMS THAT IIN THE VERSION 5.0.5 THE CCSDS IS NOT WORKING CORRECTLY, IT IS NECESSARY TO CONVERT IT TO COSMOS.
TELEMETRY PYTHON_CCSDS_EXAMPLE STATUS BIG_ENDIAN "Telemetry description"
# Keyword Name BitSize Type ID Description
APPEND_ITEM CCSDSVER 3 UINT "CCSDS PACKET VERSION NUMBER (SEE CCSDS 133.0-B-1)"
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS PACKET TYPE (COMMAND OR TELEMETRY)"
STATE TLM 0
STATE CMD 1
APPEND_ITEM CCSDSSHF 1 UINT "CCSDS SECONDARY HEADER FLAG"
STATE FALSE 0
STATE TRUE 1
APPEND_ID_ITEM CCSDSAPID 11 UINT 1 "CCSDS APPLICATION PROCESS ID"
APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS SEQUENCE FLAGS"
STATE FIRST 0
STATE CONT 1
STATE LAST 2
STATE NOGROUP 3
APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS PACKET SEQUENCE COUNT"
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS PACKET DATA LENGTH"
APPEND_ITEM POTENTIOMETERVALUE 32 UINT "POTENTIOMETER VALUE" LITTLE_ENDIAN
# Set VARIABLEs here to allow variation in your plugin
# See https://cosmosc2.com/docs/v5/plugins for more information
VARIABLE python_ccsds_example_target_name PYTHON_CCSDS_EXAMPLE
# Modify this according to your actual target connection
# See https://cosmosc2.com/docs/v5/interfaces for more information
TARGET PYTHON_CCSDS_EXAMPLE <%= python_ccsds_example_target_name %>
INTERFACE <%= python_ccsds_example_target_name %>_INT tcpip_client_interface.rb host.docker.internal 8080 8080 10.0 nil LENGTH 32 16 7
MAP_TARGET <%= python_ccsds_example_target_name %>
from construct import Int32sl
# Generate another telemetry example
CCSDS_header_temp = BitStruct(
"CCSDS_VERSION" / BitsInteger(3),
"CCSDS_TYPE" / BitsInteger(1),
"CCSDS_SECONDARY_HEADER_FLAG" / BitsInteger(1),
"CCSDS_APID" / BitsInteger(11),
"CCSDS_SEQUENCE_FLAG" / BitsInteger(2),
"CCSDS_SEQUENCE_COUNT" / BitsInteger(14)
)
OBC_TLM = Struct(
"CCSDS_TM_Packet_Header" / CCSDS_header_temp,
"CCSDS_PACKET_DATA_LENGTH" / Int16ub,
"data" / Int32sl
)
ccsds_header_dict = dict(
CCSDS_VERSION = 0b0,
CCSDS_TYPE = 0b0,
CCSDS_SECONDARY_HEADER_FLAG = 0b0,
CCSDS_APID = 0b1,
CCSDS_SEQUENCE_FLAG = 0b11,
CCSDS_SEQUENCE_COUNT = 0b0
)
packet = OBC_TLM.build(dict(
CCSDS_TM_Packet_Header = ccsds_header_dict,
CCSDS_PACKET_DATA_LENGTH = 3,
data = 6969
))
print(' '.join('{:02x}'.format(x) for x in packet))
#%%
import socket
import time
# Create server
udpPort = 8080
bufferSize = 1024;
# Listen for incoming datagrams
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(('', udpPort))
s.listen()
conn, addr = s.accept()
with conn:
print(f"Connected by {addr}")
try:
while True:
time.sleep(1)
conn.sendall(packet)
#data = conn.recv(1024)
#print(data.hex())
except KeyboardInterrupt:
print('Closing program.\n')
conn.close()
time.sleep(5)
s.close() #Close socket