MCPcopy Create free account
hub / github.com/SatDump/SatDump / work

Method work

plugins/aim_support/aim/instruments/cips/cips_reader.cpp:48–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46 }
47
48 void CIPSReader::work(ccsds::CCSDSPacket &packet)
49 {
50 packet.payload.resize(1018);
51
52 CIPSScienceHeader science_header(&packet.payload[13]);
53
54 if (science_header.start_pixel == 0)
55 add_image();
56
57 auto &img = images[images.size() - 1];
58
59 if (science_header.bits_pixel == 10)
60 {
61 uint16_t pixels[774];
62 repackBytesTo10bits(&packet.payload[54 - 6], 968, pixels);
63
64 for (int i = science_header.start_pixel, i2 = 0; i < (int)img.size() && i2 < 774; i++, i2++)
65 {
66 float value = 0;
67
68 if (science_header.compression_scheme == 0)
69 value = nominal_root_2n(pixels[i2]);
70 else if (science_header.compression_scheme == 1)
71 value = optimized_root_2n(pixels[i2]);
72 else
73 value = nominal_root_2n(pixels[i2]);
74
75 value /= 2.0;
76
77 if (value > 65536)
78 value = 65535;
79 if (value < 0)
80 value = 0;
81
82 img.set(i, value);
83 }
84 }
85 else if (science_header.bits_pixel == 17)
86 {
87 uint32_t pixels[455];
88 repackBytesTo17bits(&packet.payload[54 - 6], 968, pixels);
89
90 for (int i = science_header.start_pixel, i2 = 0; i < (int)img.size() && i2 < 455; i++, i2++)
91 {
92 float value = pixels[i2];
93
94 value /= 2.0;
95
96 if (value > 65536)
97 value = 65535;
98 if (value < 0)
99 value = 0;
100
101 img.set(i, value);
102 }
103 }
104 }
105 } // namespace swap

Callers 1

processMethod · 0.45

Calls 7

repackBytesTo10bitsFunction · 0.85
nominal_root_2nFunction · 0.85
optimized_root_2nFunction · 0.85
repackBytesTo17bitsFunction · 0.85
resizeMethod · 0.45
sizeMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected