package org.yamcs.simulator.launchland;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Vector;
import org.yamcs.simulator.CCSDSPacket;
class PowerHandler {
private final static String csvName = "test_data/power.csv";
private Vector<PowerData> entries;
private int currentEntry = 0;
public PowerHandler() {
entries = new Vector<>(100, 100);
try (BufferedReader in = new BufferedReader(new FileReader(csvName))) {
String line;
in.readLine(); // skip column titles
while ((line = in.readLine()) != null) {
line = line.replace(',', '.'); // compatible to decimals with comma (e.g. 1,23)
String[] parts = line.split(";");
PowerData entry = new PowerData();
entry.timestamp = new Float(parts[0]).floatValue();
entry.busStatus = new Integer(parts[1]).intValue();
entry.busVoltage = new Float(parts[2]).floatValue();
entry.busCurrent = new Float(parts[3]).floatValue();
entry.systemCurrent = new Float(parts[4]).floatValue();
entry.batteryVoltage1 = new Float(parts[5]).floatValue();
entry.batteryTemp1 = new Float(parts[6]).floatValue();
entry.batteryCapacity1 = new Float(parts[7]).floatValue();
entry.batteryVoltage2 = new Float(parts[8]).floatValue();
entry.batteryTemp2 = new Float(parts[9]).floatValue();
entry.batteryCapacity2 = new Float(parts[10]).floatValue();
entry.batteryVoltage3 = new Float(parts[11]).floatValue();
entry.batteryTemp3 = new Float(parts[12]).floatValue();
//entry.batteryCapacity3 = new Float(parts[13]).floatValue();
entries.add(entry);
}
} catch (IOException e) {
System.out.println(e);
}
System.out.println("have "+entries.size()+" power data records");
}
public void fillPacket(CCSDSPacket packet) {
if (entries.isEmpty())
return;
if (currentEntry >= entries.size()) {
currentEntry = 0;
}
PowerData entry = entries.elementAt(currentEntry++);
entry.fillPacket(packet, 0);
}
public void setBattOneOff(CCSDSPacket packet) {
ByteBuffer buffer = packet.getUserDataBuffer();
buffer.put(3, (byte) 0);
buffer.put(4, (byte) 0);
buffer.putShort(5, (short) 0);
}
public void setBattTwoOff(CCSDSPacket packet) {
ByteBuffer buffer = packet.getUserDataBuffer();
buffer.put(7, (byte) 0);
buffer.put(8, (byte) 0);
buffer.putShort(9, (short) 0);
}
public void setBattThreeOff(CCSDSPacket packet) {
ByteBuffer buffer = packet.getUserDataBuffer();
buffer.put(11, (byte) 0);
buffer.put(12, (byte) 0);
buffer.putShort(13, (short) 0);
}
public void displayUserData(CCSDSPacket packet) {
ByteBuffer buffer = packet.getUserDataBuffer();
buffer.position(16);
for (int i = 0; i < buffer.capacity(); i++) {
System.out.print(buffer.get(i) + " : ");
}
System.out.print(" \n ");
}
}