public void startReceivingData() {
		headDataTimer.scheduleAtFixedRate(new TimerTask() {

			private int lastYAW = 0;

			// private float lastPitch = 0;

			public void run() {

				byte[] receiveData = new byte[1024];
				DatagramPacket receivePacket = new DatagramPacket(receiveData,
						receiveData.length);
				try {
					serverSocket.receive(receivePacket);
					String sentence = new String(receivePacket.getData());
					sentence = sentence.trim();
					try {
						decodeAndSetData(sentence);

					} catch (Exception e) {

						System.out.println("Error in Data Format ! Data: "
								+ sentence.toString());
					}
					sendersIPAddress = receivePacket.getAddress();
					sendersPort = receivePacket.getPort();

					int roundedYaw = (int) Utility.mappedValue((float) Yaw
							- lastYAW, -50f, 50f, 0f, 1000f);
					if (roundedYaw <= 3 && roundedYaw >= -3) {
						roundedYaw = 0;
					}
					int roundedPitch = (int) Utility.mappedValue((float) Pitch,
							-15f, 25f, 300f, 700f);
					if (roundedPitch <= 3 && roundedPitch >= -3) {
						roundedPitch = 0;
					}

					printAllData();

					// Now Move the mouse and Keyboard presses
					mouse.MMove(0, roundedYaw, roundedPitch);
					try {
						for (int i = 0; i < 11; ++i) {
							keyStrokeengine.keys(hwKey[i], hwKeyState[i] - '0');
						}

					} catch (Exception e) {
						System.out.print("NULL DETECTED");
					}
					// lastPitch = Pitch;

				} catch (IOException e) {
					System.out.println("Error receiving data from Device ");
					e.printStackTrace();
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		}, 0, 1); // max fps

	}