+ // insert one extra header with the payload format if applicable.
+ if (CA_FORMAT_UNDEFINED != info->payloadFormat)
+ {
+ coap_list_t* node = NULL;
+ uint8_t buf[CA_ENCODE_BUFFER_SIZE] = {0};
+ switch (info->payloadFormat)
+ {
+ case CA_FORMAT_APPLICATION_CBOR:
+ node = CACreateNewOptionNode(
+ COAP_OPTION_CONTENT_FORMAT,
+ coap_encode_var_bytes(buf, (unsigned short)COAP_MEDIATYPE_APPLICATION_CBOR),
+ (char *)buf);
+ break;
+ default:
+ OIC_LOG_V(ERROR, TAG, "format option:[%d] not supported", info->payloadFormat);
+ }
+ if (!node)
+ {
+ OIC_LOG(ERROR, TAG, "format option not created");
+ return CA_STATUS_INVALID_PARAM;
+ }
+ int ret = coap_insert(optlist, node, CAOrderOpts);
+ if (ret <= 0)
+ {
+ coap_delete(node);
+ OIC_LOG(ERROR, TAG, "format option not inserted in header");
+ return CA_STATUS_INVALID_PARAM;
+ }
+ }
+ if (CA_FORMAT_UNDEFINED != info->acceptFormat)
+ {
+ coap_list_t* node = NULL;
+ uint8_t buf[CA_ENCODE_BUFFER_SIZE] = {0};
+ switch (info->acceptFormat)
+ {
+ case CA_FORMAT_APPLICATION_CBOR:
+ node = CACreateNewOptionNode(
+ COAP_OPTION_ACCEPT,
+ coap_encode_var_bytes(buf, (unsigned short)COAP_MEDIATYPE_APPLICATION_CBOR),
+ (char *)buf);
+ break;
+ default:
+ OIC_LOG_V(ERROR, TAG, "format option:[%d] not supported", info->acceptFormat);
+ }
+ if (!node)
+ {
+ OIC_LOG(ERROR, TAG, "format option not created");
+ return CA_STATUS_INVALID_PARAM;
+ }
+ int ret = coap_insert(optlist, node, CAOrderOpts);
+ if (ret <= 0)
+ {
+ coap_delete(node);
+ OIC_LOG(ERROR, TAG, "format option not inserted in header");
+ return CA_STATUS_INVALID_PARAM;
+ }
+ }
+