Exemple #1
0
  private void handlePacket(DatagramPacket receivedDatagram) throws IOException {
    byte[] received = receivedDatagram.getData();

    if (received[2] == 2) {
      System.out.println(" Discovery packet received ");
      this.remoteAddress = receivedDatagram.getAddress();
      this.remotePort = receivedDatagram.getPort();
      System.out.println(
          " Discovery Remote Address " + this.remoteAddress + " Remote Port " + this.remotePort);
      byte[] response = getDiscoveryReplyMessage();
      DatagramPacket datagram =
          new DatagramPacket(response, response.length, this.remoteAddress, this.remotePort);
      socket.send(datagram);
      System.out.println(" Discovery reply packet sent ");

      return;

    } else if (received[2] == 4) {
      if (received[3] == 1 || received[3] == 3) {
        running = true;
        this.remotePort = receivedDatagram.getPort();
        System.out.println(
            " Data Remote Address " + this.remoteAddress + " Remote Port " + this.remotePort);
        System.out.println(" SDR Program sends Start command ");
        return;
      } else {
        last_sequence_number = 0;
        running = false;
        System.out.println("  SDR Program sends Stop command ");
        return;
      }
    }

    if (isValidFrame(received)) {
      // packet contains 2 hpsdr frames; so 2 c&c's
      byte[] cc = new byte[5];
      System.arraycopy(received, 11, cc, 0, 5); // index 11 .... 15
      ccontrol.CommandAndControl(cc);
      System.arraycopy(received, 523, cc, 0, 5); // index 523 .... 531 (8
      // + 512 + 3 sync)
      ccontrol.CommandAndControl(cc);

      nrx = ccontrol.getNrOfReceivers();

      if (ccontrol.isControlDataChanged()) {
        rxHandler.setRXFrequency(ccontrol.getRXFrequency());
        System.out.println("Number of receivers " + nrx);
      }

      // lees data en vul buffers
      for (int frame = 0; frame < 2; frame++) {
        int coarse_pointer = frame * 512 + 8;

        for (int j = 8; j < 512; j += 8) {
          int k = coarse_pointer + j;

          // M
          // No codec.. skip
          // TX IQ
          // No tx yet

        }
      }
    } else {
      System.out.println(" Invalid frame ");
    }
  }