package com.nightscout.core.dexcom.records;
import com.nightscout.core.dexcom.Utils;
import org.joda.time.DateTime;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class CalSubrecord {
private DateTime dateEntered;
private int rawDateEntered;
private int calBGL;
private int calRaw;
private DateTime dateApplied;
private int rawDateApplied;
private byte unk;
public CalSubrecord(byte[] packet, long displayTimeOffset) {
int delta = ByteBuffer.wrap(packet).order(ByteOrder.LITTLE_ENDIAN).getInt();
rawDateEntered = delta;
dateEntered = Utils.receiverTimeToDate(delta + displayTimeOffset);
calBGL = ByteBuffer.wrap(packet).order(ByteOrder.LITTLE_ENDIAN).getInt(4);
calRaw = ByteBuffer.wrap(packet).order(ByteOrder.LITTLE_ENDIAN).getInt(8);
delta = ByteBuffer.wrap(packet).order(ByteOrder.LITTLE_ENDIAN).getInt(12);
rawDateApplied = delta;
dateApplied = Utils.receiverTimeToDate(delta + displayTimeOffset);
unk = packet[16];
}
public CalSubrecord(int calBGL, int calRaw, DateTime dateApplied, DateTime dateEntered) {
this.calBGL = calBGL;
this.calRaw = calRaw;
this.dateEntered = dateEntered;
this.dateApplied = dateApplied;
}
public CalSubrecord(int calBGL, int calRaw, int dateApplied, int dateEntered) {
this.calBGL = calBGL;
this.calRaw = calRaw;
this.rawDateEntered = dateEntered;
this.rawDateApplied = dateApplied;
}
public DateTime getDateEntered() {
return dateEntered;
}
public int getCalBGL() {
return calBGL;
}
public int getCalRaw() {
return calRaw;
}
public DateTime getDateApplied() {
return dateApplied;
}
public byte getUnk() {
return unk;
}
public int getRawDateEntered() {
return rawDateEntered;
}
public void setRawDateEntered(int rawDateEntered) {
this.rawDateEntered = rawDateEntered;
}
public int getRawDateApplied() {
return rawDateApplied;
}
public void setRawDateApplied(int rawDateApplied) {
this.rawDateApplied = rawDateApplied;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CalSubrecord that = (CalSubrecord) o;
if (calBGL != that.calBGL) return false;
if (calRaw != that.calRaw) return false;
if (rawDateApplied != that.rawDateApplied) return false;
return rawDateEntered == that.rawDateEntered;
}
@Override
public int hashCode() {
int result = rawDateEntered;
result = 31 * result + calBGL;
result = 31 * result + calRaw;
result = 31 * result + rawDateApplied;
return result;
}
}