altosdroid: Change tracker selection dialog
[fw/altos] / altosdroid / app / src / main / java / org / altusmetrum / AltosDroid / TelemetryState.java
1 /*
2  * Copyright © 2012 Mike Beattie <mike@ethernal.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17  */
18
19 package org.altusmetrum.AltosDroid;
20
21 import java.util.*;
22 import org.altusmetrum.altoslib_13.*;
23
24 public class TelemetryState {
25         public static final int CONNECT_NONE         = 0;
26         public static final int CONNECT_DISCONNECTED = 1;
27         public static final int CONNECT_CONNECTING   = 2;
28         public static final int CONNECT_CONNECTED    = 3;
29
30         int             connect;
31         DeviceAddress   address;
32         AltosConfigData config;
33         int             crc_errors;
34         double          receiver_battery;
35         double          frequency;
36         int             telemetry_rate;
37
38         boolean         idle_mode;
39         boolean         quiet;
40
41         private HashMap<Integer,AltosState>     states;
42
43         int             latest_serial;
44         long            latest_received_time;
45
46         public void put(int serial, AltosState state) {
47                 long received_time = state.received_time;
48                 if (received_time > latest_received_time || latest_serial == 0) {
49                         latest_serial = serial;
50                         latest_received_time = received_time;
51                 }
52                 states.put(serial, state);
53         }
54
55         public AltosState get(int serial) {
56                 if (states.containsKey(serial))
57                         return states.get(serial);
58                 return null;
59         }
60
61         public void remove(int serial) {
62                 states.remove((Integer) serial);
63         }
64
65         public Set<Integer> keySet() {
66                 return states.keySet();
67         }
68
69         public Collection<AltosState> values() {
70                 return states.values();
71         }
72
73         public boolean containsKey(int serial) {
74                 return states.containsKey(serial);
75         }
76
77         public TelemetryState() {
78                 connect = CONNECT_NONE;
79                 config = null;
80                 states = new HashMap<Integer,AltosState>();
81                 crc_errors = 0;
82                 receiver_battery = AltosLib.MISSING;
83                 frequency = AltosPreferences.frequency(0);
84                 telemetry_rate = AltosPreferences.telemetry_rate(0);
85         }
86 }