Skip to content

Commit d2edb01

Browse files
authored
Merge pull request #102 from Digitelektro/bugfix/issue_100
Bugfix/issue 100
2 parents 92ac772 + 6789535 commit d2edb01

6 files changed

Lines changed: 43 additions & 7 deletions

File tree

decoder/protocol/lrpt/decoder.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,28 @@ namespace decoder {
99
namespace protocol {
1010
namespace lrpt {
1111

12+
std::string Decoder::serialNumberToSatName(uint8_t serialNumber) {
13+
switch(serialNumber) {
14+
case 1:
15+
return "METEOR M2-1";
16+
break;
17+
case 2:
18+
return "METEOR M2-2";
19+
break;
20+
case 3:
21+
return "METEOR M2-3";
22+
break;
23+
case 4:
24+
return "METEOR M2-4";
25+
break;
26+
case 5:
27+
return "METEOR M2-5";
28+
break;
29+
default:
30+
return "METEOR M2";
31+
}
32+
}
33+
1234
void Decoder::process(const uint8_t* cadu) {
1335
VCDU vcdu(cadu);
1436

@@ -106,6 +128,10 @@ void Decoder::parse70(const CCSDS& ccsds) {
106128
uint16_t s = ccsds.packetData()[18];
107129
uint16_t ms = static_cast<uint32_t>(ccsds.packetData()[19]) * 4;
108130

131+
mSerialNumber = ccsds.packetData()[20] >> 4;
132+
133+
// std::cout << "Serial number : " << (int)mSerialNumber << std::endl;
134+
109135
mLastTimeStamp = TimeSpan(0, h, m, s, ms * 1000);
110136
mLastHeightAtTimeStamp = getLastY();
111137
if(mFirstTime) {

decoder/protocol/lrpt/decoder.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ namespace lrpt {
1515

1616
// http://planet.iitp.ru/retro/index.php?lang=en&page_type=spacecraft&page=meteor_m_n2_structure_2
1717
class Decoder : public msumr::Image {
18+
public:
19+
static std::string serialNumberToSatName(uint8_t serialNumber);
20+
1821
public:
1922
void process(const uint8_t* cadu);
2023

@@ -34,6 +37,10 @@ class Decoder : public msumr::Image {
3437
return mLastTimeStamp.Add(missingTime);
3538
}
3639

40+
uint8_t getSerialNumber() const {
41+
return mSerialNumber;
42+
}
43+
3744
private:
3845
uint16_t parsePartial(const uint8_t* data, uint32_t length);
3946
void processPacket(const CCSDS& ccsds);
@@ -50,6 +57,7 @@ class Decoder : public msumr::Image {
5057
int mFirstHeightAtTimeStamp = 0;
5158
int mLastHeightAtTimeStamp = 0;
5259
bool mFirstTime = true;
60+
uint8_t mSerialNumber = 0;
5361

5462
private:
5563
static constexpr uint8_t cVCIDAVHRR = 5;

imageproc/threatimage.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ cv::Mat ThreatImage::contrast(const cv::Mat& image, double contrast, double brig
183183
return result;
184184
}
185185

186-
void ThreatImage::drawWatermark(cv::Mat image, const std::string& date) {
186+
void ThreatImage::drawWatermark(cv::Mat image, const std::string& date, const std::string& satelliteName) {
187187
int x = 0;
188188
int y = 0;
189189
Settings& settings = Settings::getInstance();
@@ -199,6 +199,7 @@ void ThreatImage::drawWatermark(cv::Mat image, const std::string& date) {
199199
}
200200

201201
replaceAll(watermarkText, "%date%", date);
202+
replaceAll(watermarkText, "%sat%", satelliteName);
202203
replaceAll(watermarkText, "%version%", versionStr);
203204
replaceAll(watermarkText, "\\n", "\n");
204205

imageproc/threatimage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class ThreatImage {
2121

2222
// Constrast 0.0-inf, brightnes -225 to 255
2323
static cv::Mat contrast(const cv::Mat& image, double contrast, double brightness);
24-
static void drawWatermark(cv::Mat image, const std::string& date);
24+
static void drawWatermark(cv::Mat image, const std::string& date, const std::string& satelliteName);
2525
static bool isNightPass(const cv::Mat& image, float treshold);
2626

2727
private:

main.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ int main(int argc, char* argv[]) {
409409
oss << std::setfill('0') << std::setw(2) << passStart.Day() << "/" << std::setw(2) << passStart.Month() << "/" << passStart.Year() << " " << std::setw(2) << passStart.Hour() << ":" << std::setw(2) << passStart.Minute() << ":"
410410
<< std::setw(2) << passStart.Second() << " UTC";
411411
std::string dateStr = oss.str();
412+
std::string satelliteName = decoder::protocol::lrpt::Decoder::serialNumberToSatName(mLrptDecoder.getSerialNumber());
412413

413414

414415
ProjectImage rectifier(ProjectImage::Projection::Rectify, calc, mSettings.getProjectionScale());
@@ -436,23 +437,23 @@ int main(int argc, char* argv[]) {
436437

437438
if(mSettings.spreadImage()) {
438439
cv::Mat spreaded = rectifier.project(img.image);
439-
ThreatImage::drawWatermark(spreaded, dateStr);
440+
ThreatImage::drawWatermark(spreaded, dateStr, satelliteName);
440441
const std::string filePath = mSettings.getOutputPath() + std::string("spread_") + fileName;
441442
std::cout << "Saving " << filePath << std::endl;
442443
saveImage(filePath, spreaded);
443444
}
444445

445446
if(mSettings.mercatorProjection()) {
446447
cv::Mat mercator = mercatorProjector.project(img.image);
447-
ThreatImage::drawWatermark(mercator, dateStr);
448+
ThreatImage::drawWatermark(mercator, dateStr, satelliteName);
448449
const std::string filePath = mSettings.getOutputPath() + std::string("mercator_") + fileName;
449450
std::cout << "Saving " << filePath << std::endl;
450451
saveImage(filePath, mercator);
451452
}
452453

453454
if(mSettings.equadistantProjection()) {
454455
cv::Mat equidistant = equdistantProjector.project(img.image);
455-
ThreatImage::drawWatermark(equidistant, dateStr);
456+
ThreatImage::drawWatermark(equidistant, dateStr, satelliteName);
456457
const std::string filePath = mSettings.getOutputPath() + std::string("equidistant_") + fileName;
457458
std::cout << "Saving " << filePath << std::endl;
458459
saveImage(filePath, equidistant);

resources/settings.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ Color=#AD880C
6464
Size=80
6565
# Font line width in pixels
6666
Width=3
67-
;Text options: use '%date%' for date, %version% for current version of meteordemod '\n' for new line
68-
Text=MeteorDemod %version% by Digitelektro\nMETEOR M2-3\n%date%
67+
;Text options: use '%date%' for date %sat% for satellite name, %version% for current version of meteordemod '\n' for new line
68+
Text=MeteorDemod %version% by Digitelektro\n%sat%\n%date%
6969

7070
[ReceiverLocation]
7171
Draw=true

0 commit comments

Comments
 (0)