diff --git a/build/lib/CCSDS/__init__.py b/build/lib/CCSDS/__init__.py deleted file mode 100644 index 8b137891791fe96927ad78e64b0aad7bded08bdc..0000000000000000000000000000000000000000 --- a/build/lib/CCSDS/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/build/lib/CCSDS/ccsds.py b/build/lib/CCSDS/ccsds.py deleted file mode 100644 index 4ff1945a1c12e9d2507747cef3df5d80788fc398..0000000000000000000000000000000000000000 --- a/build/lib/CCSDS/ccsds.py +++ /dev/null @@ -1,109 +0,0 @@ -#! /usr/bin/env python3 -from bitstring import BitStream -import spiceypy as spice -from datetime import datetime, timedelta -from rich.console import Console - - -class PacketId: - def __init__(self,data): - pID = BitStream(hex=data).unpack('uint: 3, 2*bin: 1, bits: 11') - self.VersionNum = pID[0] - self.packetType = pID[1] - self.dataFieldHeaderFlag = pID[2] - self.Apid = pID[3].uint - self.Pid = pID[3][0:7].uint - self.Pcat = pID[3][7:].uint - pass - def serialize(self): - return [self.VersionNum, self.packetType, self.dataFieldHeaderFlag, - self.Apid, self.Pid, self.Pcat] - -class SeqControl: - def __init__(self,data): - sq = BitStream(hex=data).unpack('bin:2,uint:14') - self.SegmentationFlag = sq[0] - self.SSC = sq[1] - - def serialize(self): - return [self.SegmentationFlag, self.SSC] - -class SourcePacketHeader: - def __init__(self,data): - # Read the Source Packet Header(48 bits) - # - Packet ID (16 bits) - self.packetId = PacketId(data[0:4]) - # - Packet Sequence Control (16 bits) - self.sequeceControl = SeqControl(data[4:8]) - """ - - Packet Length (16 bits) - In the packet is stored Packet length is an unsigned word - expressing “Number of octects contained in Packet Data Field” minus 1. - """ - self.packetLength = BitStream(hex=data[8:12]).unpack('uint:16')[0]+1 - # Based on BepiColombo SIMBIO-SYS - # ref: BC-SIM-GAF-IC-002 pag. 48 - def serialize(self): - return [*self.packetId.serialize(), *self.sequeceControl.serialize(), self.packetLength] - -class DataFieldHeader: - def __init__(self,data,missionID,t0): - # Read The Data Field Header (80 bit) - dfhData = BitStream(hex=data).unpack('bin:1,uint:3,bin:4,3*uint:8,uint:1,uint:31,uint:16') - self.pusVersion = dfhData[1] - self.ServiceType = dfhData[3] - self.ServiceSubType = dfhData[4] - self.DestinationId = dfhData[5] - self.Synchronization = dfhData[6] - self.CorseTime = dfhData[7] - self.FineTime = dfhData[8] - self.SCET = "%s.%s" % (self.CorseTime, self.FineTime) - if self.Synchronization == 0: - self.UTCTime = self.scet2UTC(missionID,t0) - else: - self.UTCTime = '1970-01-01T00:00:00.00000Z' - pass - - def serialize(self): - return [self.pusVersion, self.ServiceType, self.ServiceSubType, - self.DestinationId, self.SCET, self.UTCTime] - - def scet2UTC(self,missionID,t0): - if t0 == None: - et = spice.scs2e(missionID, "{}.{}".format(self.CorseTime, self.FineTime)) - ScTime = spice.et2utc(et, 'ISOC', 5) - else: - dateFormat = "%Y-%m-%dT%H:%M:%S.%f" - dt=datetime.strptime(t0,dateFormat) - sc = self.CorseTime + self.FineTime*(2**(-16)) - f=dt+timedelta(seconds=sc) - ScTime=f.strftime(dateFormat) - return ScTime+'Z' - -class PackeDataField: - def __init__(self,data, missionID,t0): - # Data Field Header - self.DFHeader = DataFieldHeader(data[0:20],missionID,t0) - # Data - self.Data = data[20:] - pass - -class CCSDS: - """ Reader for the CCSDS header """ - def __init__(self, missionID, data,console:Console=None,t0= None): - if type(missionID) is str: - if missionID.lower() == 'bepicolombo': - missionID=-121 - else: - if t0 == None: - print("WARNING: the Mission name is not valid. time converte setted to 1970-01-01 00:00:00") - t0 = "1970-01-01T00:00:00" - # Source Packet Header - self.SPH = SourcePacketHeader(data[0:12]) - # Packet Data Field - self.PDF = PackeDataField(data[12:],missionID,t0) - self.APID = self.SPH.packetId.Apid - self.Service=self.PDF.DFHeader.ServiceType - self.subService=self.PDF.DFHeader.ServiceSubType - self.Data=self.PDF.Data - diff --git a/build/lib/PyCCSDS/__init__.py b/build/lib/PyCCSDS/__init__.py deleted file mode 100644 index 8b137891791fe96927ad78e64b0aad7bded08bdc..0000000000000000000000000000000000000000 --- a/build/lib/PyCCSDS/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/build/lib/PyCCSDS/ccsds.py b/build/lib/PyCCSDS/ccsds.py deleted file mode 100644 index e91ac45009fb136d6bc46ac2bf88bb94de86f301..0000000000000000000000000000000000000000 --- a/build/lib/PyCCSDS/ccsds.py +++ /dev/null @@ -1,111 +0,0 @@ -#! /usr/bin/env python3 -from bitstring import BitStream -import spiceypy as spice -from datetime import datetime, timedelta -from rich.console import Console - - -class PacketId: - def __init__(self,data): - pID = BitStream(hex=data).unpack('uint: 3, 2*bin: 1, bits: 11') - self.VersionNum = pID[0] - self.packetType = pID[1] - self.dataFieldHeaderFlag = pID[2] - self.Apid = pID[3].uint - self.Pid = pID[3][0:7].uint - self.Pcat = pID[3][7:].uint - pass - def serialize(self): - return [self.VersionNum, self.packetType, self.dataFieldHeaderFlag, - self.Apid, self.Pid, self.Pcat] - -class SeqControl: - def __init__(self,data): - sq = BitStream(hex=data).unpack('bin:2,uint:14') - self.SegmentationFlag = sq[0] - self.SSC = sq[1] - - def serialize(self): - return [self.SegmentationFlag, self.SSC] - -class SourcePacketHeader: - def __init__(self,data): - # Read the Source Packet Header(48 bits) - # - Packet ID (16 bits) - self.packetId = PacketId(data[0:4]) - # - Packet Sequence Control (16 bits) - self.sequeceControl = SeqControl(data[4:8]) - """ - - Packet Length (16 bits) - In the packet is stored Packet length is an unsigned word - expressing “Number of octects contained in Packet Data Field” minus 1. - """ - self.packetLength = BitStream(hex=data[8:12]).unpack('uint:16')[0]+1 - # Based on BepiColombo SIMBIO-SYS - # ref: BC-SIM-GAF-IC-002 pag. 48 - def serialize(self): - return [*self.packetId.serialize(), *self.sequeceControl.serialize(), self.packetLength] - -class DataFieldHeader: - def __init__(self,data,missionID,t0): - # Read The Data Field Header (80 bit) - dfhData = BitStream(hex=data).unpack('bin:1,uint:3,bin:4,3*uint:8,uint:1,uint:31,uint:16') - self.pusVersion = dfhData[1] - self.ServiceType = dfhData[3] - self.ServiceSubType = dfhData[4] - self.DestinationId = dfhData[5] - self.Synchronization = dfhData[6] - self.CorseTime = dfhData[7] - self.FineTime = dfhData[8] - self.SCET = "%s.%s" % (self.CorseTime, self.FineTime) - if self.Synchronization == 0: - self.UTCTime = self.scet2UTC(missionID,t0) - else: - self.UTCTime = '1970-01-01T00:00:00.00000Z' - pass - - def serialize(self): - return [self.pusVersion, self.ServiceType, self.ServiceSubType, - self.DestinationId, self.SCET, self.UTCTime] - - def scet2UTC(self,missionID,t0): - if t0 == None: - et = spice.scs2e(missionID, "{}.{}".format(self.CorseTime, self.FineTime)) - ScTime = spice.et2utc(et, 'ISOC', 5) - else: - dateFormat = "%Y-%m-%dT%H:%M:%S.%f" - dt=datetime.strptime(t0,dateFormat) - sc = self.CorseTime + self.FineTime*(2**(-16)) - f=dt+timedelta(seconds=sc) - ScTime=f.strftime(dateFormat) - return ScTime+'Z' - -class PackeDataField: - def __init__(self,data, missionID,t0): - # Data Field Header - self.DFHeader = DataFieldHeader(data[0:20],missionID,t0) - # Data - self.Data = data[20:] - pass - -class CCSDS: - """ Reader for the CCSDS header """ - def __init__(self, missionID, data,console:Console=None,t0= None): - if type(missionID) is str: - if missionID.lower() == 'bepicolombo': - missionID=-121 - elif missionID.lower() == 'juice': - missionID=-29 - else: - if t0 == None: - print("WARNING: the Mission name is not valid. time converte setted to 1970-01-01 00:00:00") - t0 = "1970-01-01T00:00:00" - # Source Packet Header - self.SPH = SourcePacketHeader(data[0:12]) - # Packet Data Field - self.PDF = PackeDataField(data[12:],missionID,t0) - self.APID = self.SPH.packetId.Apid - self.Service=self.PDF.DFHeader.ServiceType - self.subService=self.PDF.DFHeader.ServiceSubType - self.Data=self.PDF.Data - diff --git a/dist/Python-CCSDS-0.1.0.tar.gz b/dist/Python-CCSDS-0.1.0.tar.gz deleted file mode 100644 index 67049480a221d14c67932173914cadf83bef5398..0000000000000000000000000000000000000000 Binary files a/dist/Python-CCSDS-0.1.0.tar.gz and /dev/null differ diff --git a/dist/Python_CCSDS-0.1.0-py3-none-any.whl b/dist/Python_CCSDS-0.1.0-py3-none-any.whl deleted file mode 100644 index 1853dc3b56884390bdbb5d31e5a5a3227a5891ad..0000000000000000000000000000000000000000 Binary files a/dist/Python_CCSDS-0.1.0-py3-none-any.whl and /dev/null differ diff --git a/pyproject.toml b/pyproject.toml index 1eda487a55932fbdc21d0ef2323c2eeee7373aa7..ea49705782d8ad7081d46da4d0c353fb007393f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,24 +1,19 @@ -[project] +[tool.poetry] name = "Python-CCSDS" version = "0.1.0" -dependencies = [ - "rich", - "bitstring", - "spiceypy", - 'importlib-metadata; python_version>"3.9"', -] - -authors = [{name="Romolo Politi", email ="romolo.politi@gmail.com" }] -license = {text = "GNU GPL ver3"} -readme = "README.md" keywords =['python','ccsds','nasa','esa','packets'] descriprion = 'Python library to read the CCSDS packets' +authors = ["Romolo Politi <romolo.politi@inaf.it>"] +license = "GNU GPL ver3" +readme = "README.md" - -[project.optional-dependencies] -docs = ["sphinx"] +[tool.poetry.dependencies] +python = "^3.12" +rich = "^13.9.2" +bitstring = "^4.2.3" +spiceypy = "^6.0.0" [build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api"