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)]
11pub struct Location {
12 pub longitude: f64,
13 pub latitude: f64,
14 pub elevation: f64,
15}
16
17#[cfg_attr(
18 feature = "serde",
19 derive(Serialize, Deserialize),
20 serde(rename_all = "camelCase")
21)]
22#[derive(Debug, Clone, PartialEq)]
23pub struct Direction {
24 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
25 pub timestamp: OffsetDateTime,
26 pub az: f64,
27 pub el: f64,
28}
29
30#[cfg_attr(
31 feature = "serde",
32 derive(Serialize, Deserialize),
33 serde(rename_all = "camelCase")
34)]
35#[derive(Debug, Clone, PartialEq)]
36pub struct AzEl {
37 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
38 pub start: OffsetDateTime,
39 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
40 pub end: OffsetDateTime,
41 pub location: Location,
42 pub directions: Vec<Direction>,
43}