package kukaWii.wiiHandle.consumer;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import kukaWii.wiiHandle.packet.AbstractPacket;
import kukaWii.wiiHandle.packet.AccelerometerPacket;
import kukaWii.wiiHandle.packet.MotionPlusPacket;
public class PersistenceConsumer extends AbstractPacketConsumer{
private List<AbstractPacket> packets = new ArrayList<AbstractPacket>();
private int accelPackets;
private int mopluPackets;
private long mopluTimestamp = System.currentTimeMillis();
private long accelTimestamp = System.currentTimeMillis();
private int sysoutRate = 100;
private int serialRun = 1;
@Override
protected void consume(AbstractPacket packet) {
packets.add(packet);
if(packet instanceof MotionPlusPacket){
mopluPackets++;
if(mopluPackets%sysoutRate==0){
System.out.println("MotionPlus Speed: "+(sysoutRate*1000/(packet.getTimestampMillis() -mopluTimestamp))+" Packets/sec");
mopluTimestamp = packet.getTimestampMillis();
mopluPackets = 0;
}
}else if(packet instanceof AccelerometerPacket){
accelPackets++;
if(accelPackets%sysoutRate==0){
System.out.println("AccelPacket Speed: "+(sysoutRate*1000/(packet.getTimestampMillis() -accelTimestamp))+" Packets/sec");
accelTimestamp = packet.getTimestampMillis();
accelPackets = 0;
}
}
if(packets.size()==100000){
System.out.println("Begin Serialization");
try {
FileOutputStream file = new FileOutputStream( "packets"+serialRun+".pck" );
ObjectOutputStream o = new ObjectOutputStream( file );
o.writeObject(packets);
o.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Serialization completed. "+"packets"+serialRun+".pck");
serialRun++;
}
}
}