52#define LOG_MODULE "coap"
53#define LOG_LEVEL LOG_LEVEL_COAP
85 uint8_t *target,
size_t *len,
size_t max_len)
87 const uint8_t *payload = 0;
88 int pay_len = coap_get_payload(request, &payload);
90 if(!pay_len || !payload) {
91 coap_status_code = BAD_REQUEST_4_00;
92 coap_error_message =
"NoPayload";
96 if(request->block1_offset + pay_len > max_len) {
97 coap_status_code = REQUEST_ENTITY_TOO_LARGE_4_13;
98 coap_error_message =
"Message to big";
103 memcpy(target + request->block1_offset, payload, pay_len);
104 *len = request->block1_offset + pay_len;
107 if(coap_is_option(request, COAP_OPTION_BLOCK1)) {
108 LOG_DBG(
"Blockwise: block 1 request: Num: %"PRIu32
109 ", More: %u, Size: %u, Offset: %"PRIu32
"\n",
111 request->block1_more,
112 request->block1_size,
113 request->block1_offset);
115 coap_set_header_block1(response, request->block1_num,
116 request->block1_more, request->block1_size);
117 if(request->block1_more) {
118 coap_set_status_code(response, CONTINUE_2_31);
CoAP module for block 1 handling.
An implementation of the Constrained Application Protocol (RFC 7252).
int coap_block1_handler(coap_message_t *request, coap_message_t *response, uint8_t *target, size_t *len, size_t max_len)
Block 1 support within a CoAP resource.