public void run() {
   if (BlackBoxProtocol.getInstance().reconnectToDriverStation())
     System.out.println("BlackBoxProtocol: Established connection to driver station");
   else System.out.println("BlackBoxProtocol: Failed to establish connection with driver station");
   running = true;
   while (running) {
     if (BlackBoxProtocol.getInstance().isConnectedToDriverStation()) {
       BlackBoxPacket gamePacket = new BlackBoxPacket();
       addGamePacket(gamePacket);
       BlackBoxPacket dataPacket = new BlackBoxPacket();
       addAnalogPackets(dataPacket);
       addDigitalPackets(dataPacket);
       addSolenoidPackets(dataPacket);
       BlackBoxPacket messagePacket = new BlackBoxPacket();
       while (messages.size() > 0) {
         String message = (String) messages.elementAt(0);
         messages.removeElementAt(0);
         messagePacket.addPacket(BlackBoxSubPacket.createPacketForMessage(message));
       }
       BlackBoxProtocol.getInstance().sendPacket(gamePacket);
       BlackBoxProtocol.getInstance().sendPacket(dataPacket);
       BlackBoxProtocol.getInstance().sendPacket(messagePacket);
     } else {
       BlackBoxProtocol.getInstance().reconnectToDriverStation();
     }
     try {
       Thread.sleep(BlackBoxProtocol.getInstance().getUpdateRate());
     } catch (InterruptedException ex) {
       running = false;
     }
   }
 }