Initial project commit

This commit is contained in:
2020-07-18 21:44:27 -04:00
parent 8a1141b373
commit fea891a268
127 changed files with 20838 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
package com.eveningoutpost.dexdrip.G5Model;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
// created by jamorham
public class SessionStartRxMessage extends BaseMessage {
public static final byte opcode = 0x27;
final byte length = 17;
private byte status = (byte) 0xFF;
private byte info = (byte) 0xFF;
final String transmitterId;
int sessionStartTime = 0;
int requestedStartTime = 0;
int transitterTime = 0;
boolean valid = false;
public SessionStartRxMessage(byte[] packet, String transmitterId) {
this.transmitterId = transmitterId;
if (packet.length == length) {
data = ByteBuffer.wrap(packet).order(ByteOrder.LITTLE_ENDIAN);
if ((data.get() == opcode) && checkCRC(packet)) {
valid = true;
status = data.get();
info = data.get();
requestedStartTime = data.getInt();
sessionStartTime = data.getInt();
transitterTime = data.getInt();
}
}
}
boolean isValid() {
return valid;
}
boolean isOkay() {
return isValid() && status == 0x00 && (info == 0x01 || info == 0x05) && sessionStartTime != INVALID_TIME;
}
// beyond hope?
boolean isFubar() {
return info == 0x04;
}
long getSessionStart() {
if (isOkay() && sessionStartTime > 0) {
return DexTimeKeeper.fromDexTime(transmitterId, sessionStartTime);
} else {
return 0;
}
}
long getRequestedStart() {
if (isOkay() && requestedStartTime > 0) {
return DexTimeKeeper.fromDexTime(transmitterId, requestedStartTime);
} else {
return 0;
}
}
long getTransmitterTime() {
if (isOkay() && transitterTime > 0) {
return DexTimeKeeper.fromDexTime(transmitterId, transitterTime);
} else {
return 0;
}
}
String message() {
switch (info) {
case 0x01:
return "OK";
case 0x02:
return "Already started";
case 0x03:
return "Invalid";
case 0x04:
return "Clock not synchronized or other error"; // probably
case 0x05:
return "OK G6"; // probably
default:
return "Unknown code: " + info;
}
}
}