dapnet_api/types/
transmitters.rs

1use super::Connection;
2use chrono::{DateTime, Utc};
3use serde::Deserialize;
4
5#[derive(Debug, Deserialize)]
6pub enum Usage {
7    #[serde(rename = "PERSONAL")]
8    Personal,
9    #[serde(rename = "WIDERANGE")]
10    Widerange,
11}
12
13#[derive(Debug, Deserialize)]
14pub enum AntennaType {
15    #[serde(rename = "OMNI")]
16    Omnidirectional,
17    #[serde(rename = "DIRECTIONAL")]
18    Directional,
19}
20
21#[derive(Debug, Deserialize)]
22pub enum Status {
23    #[serde(rename = "OFFLINE")]
24    Offline,
25    #[serde(rename = "ONLINE")]
26    Online,
27    #[serde(rename = "ERROR")]
28    Error,
29}
30
31#[derive(Debug, Deserialize)]
32pub struct Transmitter {
33    pub name: String,
34    pub usage: Usage,
35
36    pub longitude: String,
37    pub latitude: String,
38
39    /// Textual representation of the timeslots the transmitter will be active on
40    #[serde(rename = "timeSlot")]
41    pub timeslots: String,
42
43    #[serde(rename = "ownerNames")]
44    pub owners: Vec<String>,
45
46    pub status: Status,
47
48    #[serde(rename = "callCount")]
49    pub call_count: u64,
50
51    #[serde(rename = "address")]
52    pub connection: Option<Connection>,
53
54    /// Name of the DAPNET node the transmitter connects to
55    #[serde(rename = "nodeName")]
56    pub node: Option<String>,
57
58    /// Key to be used for authentication by transmitter/modem
59    /// Only present when the API user is the owner of the transmitter
60    #[serde(rename = "authKey")]
61    pub auth_key: Option<String>,
62
63    #[serde(rename = "deviceType")]
64    pub device_type: Option<String>,
65    #[serde(rename = "deviceVersion")]
66    pub device_version: Option<String>,
67
68    /// Transmitter power in watts
69    pub power: String,
70
71    /// Antenna elevation above ground in metres
72    #[serde(rename = "antennaAboveGroundLevel")]
73    pub antenna_height_above_ground: i64,
74
75    #[serde(rename = "antennaType")]
76    pub antenna_type: AntennaType,
77
78    /// Antenna direction in degrees (only relevant for directional antennas)
79    #[serde(rename = "antennaDirection")]
80    pub antenna_direction: f64,
81
82    /// Antenna gain in dBi
83    #[serde(rename = "antennaGainDbi")]
84    pub antenna_gain: f64,
85
86    #[serde(rename = "identificationAddress")]
87    pub identification_address: i64,
88
89    /// Time when the transmitter details were last modified
90    #[serde(rename = "lastUpdate")]
91    pub last_update: DateTime<Utc>,
92
93    /// Time when the transmitter was last seen online
94    #[serde(rename = "lastConnected")]
95    pub last_connected: Option<DateTime<Utc>>,
96
97    /// Time at which the transmitter became online
98    #[serde(rename = "connectedSince")]
99    pub connected_since: Option<DateTime<Utc>>,
100}