public void run() {

    stopRequested = false;

    this.nsb = new CldcNetworkByteSource(this.inetHost, this.inetPort, manager.getGprsConf());
    this.airPacketizer = new CldcPacketizer("GPRS", nsb, 0); // WARNING 1 is TINYOS

    serialPacketizer.setPacketListener(this);

    try {
      airPacketizer.open(PrintStreamMessenger.err);
    } catch (IOException ioe) {
      ioe.printStackTrace();
    }

    int packetCnt = 0;
    for (; ; ) {
      try {
        byte[] packet = airPacketizer.readPacket();
        // write back to serial interface
        long t1 = System.currentTimeMillis();
        serialPacketizer.writePacket(packet);
        long t2 = System.currentTimeMillis();
        System.out.println("*** FWD GPRS > SERIAL done in " + (t2 - t1));
        if (stopRequested) {
          serialPacketizer.removePacketListener();
          return;
        }

      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  public void requestStop() {
    try {
      airPacketizer.close();
    } catch (Exception e) {
    }

    stopRequested = true;
  }
  // any packet received by the serial are sent back to the air iface
  public void packetReceived(byte[] packet) {
    try {
      // (byte)0x0A
      // packet filtering, oscope specific
      // if (packet.length > 7)
      // if (packet[4] == this.inetMessageFilter)
      long t1 = System.currentTimeMillis();
      airPacketizer.writePacket(packet);
      long t2 = System.currentTimeMillis();
      System.out.println("*** FWD GPRS < SERIAL done in " + (t2 - t1));

    } catch (IOException ioe) {
      ioe.printStackTrace();
    }
  }