*/
package org.altusmetrum.AltosLib;
+import java.text.*;
public abstract class AltosTelemetryRecord {
final static int packet_type_location = 0x05;
final static int packet_type_satellite = 0x06;
final static int packet_type_companion = 0x07;
+ final static int packet_type_MM_sensor = 0x08;
+ final static int packet_type_MM_data = 0x09;
static AltosTelemetryRecord parse_hex(String hex) throws ParseException, AltosCRCException {
AltosTelemetryRecord r;
int[] bytes;
try {
- bytes = Altos.hexbytes(hex);
+ bytes = AltosLib.hexbytes(hex);
} catch (NumberFormatException ne) {
throw new ParseException(ne.getMessage(), 0);
}
if (!cksum(bytes))
throw new ParseException(String.format("invalid line \"%s\"", hex), 0);
- int rssi = Altos.int8(bytes, bytes.length - 3) / 2 - 74;
- int status = Altos.uint8(bytes, bytes.length - 2);
+ int rssi = AltosLib.int8(bytes, bytes.length - 3) / 2 - 74;
+ int status = AltosLib.uint8(bytes, bytes.length - 2);
if ((status & PKT_APPEND_STATUS_1_CRC_OK) == 0)
throw new AltosCRCException(rssi);
/* length, data ..., rssi, status, checksum -- 4 bytes extra */
switch (bytes.length) {
- case Altos.ao_telemetry_standard_len + 4:
- int type = Altos.uint8(bytes, 4 + 1);
+ case AltosLib.ao_telemetry_standard_len + 4:
+ int type = AltosLib.uint8(bytes, 4 + 1);
switch (type) {
case packet_type_TM_sensor:
case packet_type_Tm_sensor:
case packet_type_companion:
r = new AltosTelemetryRecordCompanion(bytes);
break;
+ case packet_type_MM_sensor:
+ r = new AltosTelemetryRecordMegaSensor(bytes, rssi);
+ break;
+ case packet_type_MM_data:
+ r = new AltosTelemetryRecordMegaData(bytes);
+ break;
default:
r = new AltosTelemetryRecordRaw(bytes);
break;
}
break;
- case Altos.ao_telemetry_0_9_len + 4:
+ case AltosLib.ao_telemetry_0_9_len + 4:
r = new AltosTelemetryRecordLegacy(bytes, rssi, status);
break;
- case Altos.ao_telemetry_0_8_len + 4:
+ case AltosLib.ao_telemetry_0_8_len + 4:
r = new AltosTelemetryRecordLegacy(bytes, rssi, status);
break;
default: