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 "); } }