113 lines
2.8 KiB
C
113 lines
2.8 KiB
C
//
|
||
// 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;
|
||
}
|