altoslib: Improve AltosState save/restore debugging
[fw/altos] / altoslib / AltosCompanion.java
1 /*
2  * Copyright © 2011 Keith Packard <keithp@keithp.com>
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; version 2 of the License.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program; if not, write to the Free Software Foundation, Inc.,
15  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
16  */
17
18 package org.altusmetrum.altoslib_11;
19
20 import java.io.*;
21
22 public class AltosCompanion implements AltosJsonable {
23         public final static int board_id_telescience = 0x0a;
24         public final static int MAX_CHANNELS = 12;
25
26         public int      tick;
27         public int      board_id;
28         public int      update_period;
29         public int      channels;
30         public int[]    companion_data;
31
32         public AltosCompanion(int in_channels) {
33                 channels = in_channels;
34                 if (channels < 0)
35                         channels = 0;
36                 if (channels > MAX_CHANNELS)
37                         channels = MAX_CHANNELS;
38                 companion_data = new int[channels];
39         }
40
41         public AltosJson json() {
42                 AltosJson j = new AltosJson();
43
44                 j.put("tick", tick);
45                 j.put("board_id", board_id);
46                 j.put("update_period", update_period);
47                 j.put("channels", channels);
48                 j.put("companion_data", companion_data);
49                 return j;
50         }
51
52         public AltosCompanion(AltosJson j) {
53                 tick = j.get_int("tick", tick);
54                 board_id = j.get_int("board_id", board_id);
55                 update_period = j.get_int("update_period", update_period);
56                 channels = j.get_int("channels", channels);
57                 companion_data = j.get_int_array("companion_data", new int[channels]);
58         }
59
60         public static AltosCompanion fromJson(AltosJson j, AltosCompanion def) {
61                 if (j == null)
62                         return def;
63
64                 return new AltosCompanion(j);
65         }
66 }