freedom_models/
azel.rs

1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4
5#[cfg_attr(
6    feature = "serde",
7    derive(Serialize, Deserialize),
8    serde(rename_all = "camelCase")
9)]
10#[derive(Debug, Clone, PartialEq)]
11#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
12pub struct Location {
13    pub longitude: f64,
14    pub latitude: f64,
15    pub elevation: f64,
16}
17
18#[cfg_attr(
19    feature = "serde",
20    derive(Serialize, Deserialize),
21    serde(rename_all = "camelCase")
22)]
23#[derive(Debug, Clone, PartialEq)]
24#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
25pub struct Direction {
26    #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
27    pub timestamp: OffsetDateTime,
28    pub az: f64,
29    pub el: f64,
30}
31
32#[cfg_attr(
33    feature = "serde",
34    derive(Serialize, Deserialize),
35    serde(rename_all = "camelCase")
36)]
37#[derive(Debug, Clone, PartialEq)]
38#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
39pub struct AzEl {
40    #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
41    pub start: OffsetDateTime,
42    #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
43    pub end: OffsetDateTime,
44    pub location: Location,
45    pub directions: Vec<Direction>,
46}