code: private void setPacketReceiptNotifications(final int number)
  			throws DfuException, DeviceDisconnectedException, UploadAbortedException,
  			UnknownResponseException, RemoteDfuException {
  		if (!mConnected)
  			throw new DeviceDisconnectedException("Unable to read Checksum: device disconnected");
  
  		// Send the number of packets of firmware before receiving a receipt notification
  		logi("Sending the number of packets before notifications (Op Code = 2, Value = " + number + ")");
  		setNumberOfPackets(OP_CODE_PACKET_RECEIPT_NOTIF_REQ, number);
  		writeOpCode(mControlPointCharacteristic, OP_CODE_PACKET_RECEIPT_NOTIF_REQ);
  
  		// Read response
  		final byte[] response = readNotificationResponse();
  		final int status = getStatusCode(response, OP_CODE_PACKET_RECEIPT_NOTIF_REQ_KEY);
  		if (status == SecureDfuError.EXTENDED_ERROR)
  			throw new RemoteDfuExtendedErrorException("Sending the number of packets failed", response[3]);
  		if (status != DFU_STATUS_SUCCESS)
  			throw new RemoteDfuException("Sending the number of packets failed", status);
  	}
docs: Sets the number of packets that needs to be sent to receive the Packet Receipt Notification.
  Value 0 disables PRNs. By default this is disabled. The PRNs may be used to send both the
  Data and Command object, but this Secure DFU implementation can handle them only during Data transfer.
  <p>
  The intention of having PRNs is to make sure the outgoing BLE buffer is not getting overflown.
  The PRN will be sent after sending all packets from the queue.
  
  @param number number of packets required before receiving a Packet Receipt Notification.
  @throws DfuException
  @throws DeviceDisconnectedException
  @throws UploadAbortedException
  @throws UnknownResponseException
  @throws RemoteDfuException thrown when the returned status code is not equal to {@link #DFU_STATUS_SUCCESS}