SatDump 2.0.0-alpha-520736c72
Loading...
Searching...
No Matches
xrit_demux.h
1#pragma once
2
3#include "common/ccsds/ccsds_aos/demuxer.h"
4#include "xrit/xrit_file.h"
5#include <functional>
6#include <memory>
7
8namespace satdump
9{
10 namespace xrit
11 {
12 class XRITDemux
13 {
14 private:
15 const int d_mpdu_size;
16 const bool d_check_crc;
17
18 private:
19 std::map<int, std::unique_ptr<ccsds::ccsds_aos::Demuxer>> demuxers;
20 std::map<int, std::map<int, XRITFile>> wip_files;
21
22 std::vector<XRITFile> files;
23
24 private:
25 void processLRITHeader(XRITFile &file, ccsds::CCSDSPacket &pkt);
26 void parseHeader(XRITFile &file);
27 void processLRITData(XRITFile &file, ccsds::CCSDSPacket &pkt, bool bad_crc = false);
28 void finalizeLRITData(XRITFile &file);
29
30 public:
31 std::function<void(XRITFile &)> onParseHeader = [](XRITFile &) -> void {};
32 std::function<bool(XRITFile &, ccsds::CCSDSPacket &, bool)> onProcessData = [](XRITFile &, ccsds::CCSDSPacket &, bool) -> bool { return true; };
33 std::function<void(XRITFile &)> onFinalizeData = [](XRITFile &) -> void {};
34
35 public:
36 XRITDemux(int mpdu_size = 884, bool check_crc = true);
37 ~XRITDemux();
38
39 std::vector<XRITFile> work(uint8_t *cadu);
40 };
41 } // namespace xrit
42} // namespace satdump
Struct representing a CCSDS Space Packet.
Definition ccsds.h:39
Definition xrit_file.h:143