@Override
  public BasicCoapResponse createResponse(
      CoapMessage request, CoapResponseCode responseCode, CoapMediaType contentType) {
    BasicCoapResponse response;
    if (request.getPacketType() == CoapPacketType.CON) {
      response =
          new BasicCoapResponse(
              CoapPacketType.ACK, responseCode, request.getMessageID(), request.getToken());
    } else if (request.getPacketType() == CoapPacketType.NON) {
      response =
          new BasicCoapResponse(
              CoapPacketType.NON, responseCode, request.getMessageID(), request.getToken());
    } else {
      throw new IllegalStateException(
          "Create Response failed, Request is neither a CON nor a NON packet");
    }
    if (contentType != null && contentType != CoapMediaType.UNKNOWN) {
      response.setContentType(contentType);
    }

    response.setChannel(this);
    return response;
  }