gonets_decoderAlmanac/tst/test.c

113 lines
2.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Created by xemon on 21.06.23.
//
#include "GonetsAlmanac.h"
#include <stdio.h>
#include <vector.h>
#include "time.h"
#define TEST_ALMANAC_FILE "curalm(2).dat"
//#define TEST_ALMANAC_FILE "../CURALM.DAT"
//double rangeAngle=90-89.65081259507197; //угол конуса
double rangeAngle = 40;
double rangeDistance = 5117; //дистанция до спутника
const RANGEMIN = 5;
size_t load_from_file(tGonetsAlmanac *alms) {
size_t countAlmanac = 0;
// подгружаем альманахи
FILE *f = fopen(TEST_ALMANAC_FILE, "r+");
fseek(f, 11, SEEK_CUR);
tGonetsAlmanac alm;
// сделали декодирование (достаточно просто считать их в запакованную структуру)
while (!feof(f)) {
size_t read = (fread(&alm, sizeof(tGonetsAlmanac), 1, f));
////важно чтоб весь альманах целеком был подгружен!!!!
if (read) {
*alms = alm;
++alms;
countAlmanac++;
}
}
fclose(f);
return countAlmanac;
}
void timeCheck(tGonetsAlmanac *alms, int countAlmanac, time_t now) {
//вводим начальные данные
struct tm ts;
// time(&now);
time_t interval_begin = now - 1 * 60;
time_t interval_end = now + 1 * 60;
// now += 3 * 3600;
// ts = *localtime(&now); //текущее время
// vector3 vectorAlmanac; //переменная для записи координат спутника
uint8_t inRange[100]; // массив со спутниками внутри конуса
int countRange = 0;
vector2 selfPosition = {52.232f, 41.2322f};//твоя позиция
countRange = GonetsAlmanac_GetInRangeForInterval(
// countRange = GonetsAlmanac_GetInRangeForMoment(
alms,
countAlmanac,
selfPosition,
4000,
interval_begin,
interval_end,
// now,
inRange
);
printf("in range (%i): ", countRange);
for (uint8_t *nka = inRange, *end = inRange + countRange; nka < end; ++nka) {
printf("%02i ", *nka);
}
printf("\n");
}
int main() {
tGonetsAlmanac alms[50];
int countAlmanac = load_from_file(alms);
printf("alms (%i): ", countAlmanac);
for (tGonetsAlmanac *alm = alms, *end = alms + countAlmanac; alm < end; ++alm) {
printf("%02i ", alm->NKA);
}
time_t now, end;
now = 1687536080;
// now = 1686730934;
end = now + 3600 * 120;
printf("\n");
if (GonetsAlmanac_IsValid(alms, now)) {
printf("valid\n ");
} else {
printf("expired\n ");
}
for (time_t timestamp = now; timestamp < end; timestamp += 60) {
timeCheck(alms, countAlmanac, timestamp);
}
return 0;
}