// // 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