/** Small utility method to interpret the contents of a Pid_ */
  public static String positionData(int[] packet) {
    StringBuffer res = new StringBuffer();

    int[] data = new int[8];
    for (int i = 0; i < 8; i++) {
      data[i] = packet[i + 3];
    }

    double pos = toDouble(data);
    double deg = toDegrees(pos);
    int degrees = (int) deg;
    double minutes = deg - degrees;
    minutes *= 60;
    res.append("Pos: " + degrees + "°" + minutes + "'\n");

    for (int i = 0; i < 8; i++) {
      data[i] = packet[i + 11];
    }

    pos = toDouble(data);
    deg = toDegrees(pos);
    degrees = (int) deg;
    minutes = deg - degrees;
    minutes *= 60;
    res.append("Pos: " + degrees + "°" + minutes + "'\n");

    return res.toString();
  }
 /** Small utility method to interpret the contents of a Pid_Protocol_Array-packet. */
 public static String protocolArray(int[] packet) {
   StringBuffer res = new StringBuffer();
   char tag;
   int data;
   for (int i = 0; i < packet[2]; i += 3) {
     tag = (char) packet[3 + i];
     data = toWord(packet[i + 5], packet[i + 4]);
     res.append("\'" + tag + "\'" + " " + data + "\n");
   }
   return res.toString();
 }
  /** Small utility method to interpret the contents of a Pid_Product_Data-packet. */
  public static String productData(int[] packet) {
    StringBuffer res = new StringBuffer();
    res.append("Product ID: ");
    res.append(toWord(packet[4], packet[3]));
    res.append('\n');

    res.append("Software version: ");
    res.append(toWord(packet[6], packet[4]));
    res.append('\n');

    for (int i = 7; packet[i] != 0; i++) {
      res.append((char) packet[i]);
    }
    return res.toString();
  }
  /** Small utility method to pretty-print the contents of a date-time-packet. */
  public static String datetime(int[] packet) {
    StringBuffer res = new StringBuffer();
    res.append("Month: ");
    res.append(packet[3]);
    res.append('\n');

    res.append("Day: ");
    res.append(packet[4]);
    res.append('\n');

    res.append("Year: ");
    res.append(toWord(packet[6], packet[5]));
    res.append('\n');

    res.append("Time: ");
    res.append(toWord(packet[8], packet[7]));
    res.append(':');

    res.append(packet[9]);
    res.append(':');
    res.append(packet[10]);

    return res.toString();
  }