75 lines
2.5 KiB
C
75 lines
2.5 KiB
C
//
|
||
// Created by dd on 06.06.2023.
|
||
//
|
||
|
||
#ifndef DECODERALMANACH_DECODER_H
|
||
#define DECODERALMANACH_DECODER_H
|
||
|
||
#include "stdint.h"
|
||
#include "vector.h"
|
||
#include "time.h"
|
||
#include "stdbool.h"
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t NKA;
|
||
uint16_t coil;
|
||
struct {
|
||
uint8_t day;
|
||
uint8_t month;
|
||
uint8_t year;
|
||
} date;
|
||
double equator_time;
|
||
double semimajor_axis;
|
||
double eccentricity;
|
||
double inclination;
|
||
double periapsis_argument;
|
||
double assending_node_longitud;
|
||
double saros;
|
||
double assending_node_longitude_delta;
|
||
double periapsis_argument_delta;
|
||
uint8_t validity_interval;
|
||
// uint8_t beginDateWTF;
|
||
// uint8_t validToWTF;
|
||
} tGonetsAlmanac;
|
||
|
||
|
||
//возвращаемое значение
|
||
//это количество элемтов в массиве inRange
|
||
size_t GonetsAlmanac_GetInRangeForInterval(
|
||
tGonetsAlmanac *alms, //массив альманахов
|
||
size_t almsCount, //количество элементов в массиве
|
||
|
||
vector2 geoLocation, //собственная широта и долгота
|
||
float rangeDistance, //ограничение по расстоянию до спутника
|
||
|
||
//интервал времени в течении которого (полностью от начала и до конца)
|
||
//спутник должен находиться в зоне видимости
|
||
time_t begin,
|
||
time_t end,
|
||
|
||
//возвращаемый массив с номерами спутников
|
||
uint8_t *inRange
|
||
);
|
||
|
||
|
||
//возвращаемое значение
|
||
//это количество элемтов в массиве inRange
|
||
size_t GonetsAlmanac_GetInRangeForMoment(
|
||
tGonetsAlmanac *alms, //массив альманахов
|
||
size_t almsCount, //количество элементов в массиве
|
||
|
||
vector2 geoLocation, //собственная широта и долгота
|
||
float rangeDistance, //ограничение по расстоянию до спутника
|
||
|
||
time_t moment,//момент времени для которого запрашиваем спутники в зоне видимости
|
||
|
||
//возвращаемый массив с номерами спутников
|
||
uint8_t *inRange
|
||
);
|
||
|
||
float GonetsAlmanac_GetDistanceByAngleDeg(float angleDeg);
|
||
|
||
bool GonetsAlmanac_IsValid(tGonetsAlmanac *alms, time_t now);
|
||
|
||
#endif //DECODERALMANACH_DECODER_H
|