Loading...
Searching...
No Matches
coap_block.c File Reference

CoAP Block handling. More...

`#include "coap3/coap_libcoap_build.h"`
Include dependency graph for coap_block.c:

Go to the source code of this file.

## Macros

#define | min(a, b)
#define | MAX_BLK_LEN (((1UL << 20) - 1) * (1 << (6 + 4)))

## Functions

int | coap_q_block_is_supported (void)
| Check whether Q-BlockX is available.
unsigned int | coap_opt_block_num (const coap_opt_t *block_opt)
| Returns the value of field `num` in the given block option `block_opt`.
int | coap_get_block_b (const coap_session_t *session, const coap_pdu_t *pdu, coap_option_num_t number, coap_block_b_t *block)
| Initializes `block` from `pdu`.
int | coap_get_block (const coap_pdu_t *pdu, coap_option_num_t number, coap_block_t *block)
| Initializes `block` from `pdu`.
static int | setup_block_b (coap_session_t *session, coap_pdu_t *pdu, coap_block_b_t *block, unsigned int num, unsigned int blk_size, size_t total)
int | coap_write_block_opt (coap_block_t *block, coap_option_num_t number, coap_pdu_t *pdu, size_t data_length)
| Writes a block option of type `number` to message `pdu`.
int | coap_write_block_b_opt (coap_session_t *session, coap_block_b_t *block, coap_option_num_t number, coap_pdu_t *pdu, size_t data_length)
| Writes a block option of type `number` to message `pdu`.
int | coap_add_block (coap_pdu_t *pdu, size_t len, const uint8_t *data, unsigned int block_num, unsigned char block_szx)
| Adds the `block_num` block of size 1 << (`block_szx` + 4) from source `data` to `pdu`.
int | coap_add_block_b_data (coap_pdu_t *pdu, size_t len, const uint8_t *data, coap_block_b_t *block)
| Adds the appropriate payload data of the body to the `pdu`.
void | coap_add_data_blocked_response (const coap_pdu_t *request, coap_pdu_t *response, uint16_t media_type, int maxage, size_t length, const uint8_t *data)
| Adds the appropriate part of `data` to the `response` pdu.
COAP_API void | coap_context_set_block_mode (coap_context_t *context, uint32_t block_mode)
| Set the context level CoAP block handling bits for handling RFC7959.
void | coap_context_set_block_mode_lkd (coap_context_t *context, uint32_t block_mode)
| Set the context level CoAP block handling bits for handling RFC7959.
COAP_API int | coap_context_set_max_block_size (coap_context_t *context, size_t max_block_size)
| Set the context level maximum block size that the server supports when sending or receiving packets with Block1 or Block2 options.
int | coap_context_set_max_block_size_lkd (coap_context_t *context, size_t max_block_size)
| Set the context level maximum block size that the server supports when sending or receiving packets with Block1 or Block2 options.
COAP_STATIC_INLINE int | full_match (const uint8_t *a, size_t alen, const uint8_t *b, size_t blen)
static int | coap_add_data_large_internal (coap_session_t *session, const coap_pdu_t *request, coap_pdu_t *pdu, coap_resource_t *resource, const coap_string_t *query, int maxage, uint64_t etag, size_t length, const uint8_t *data, coap_release_large_data_t release_func, void *app_ptr, int single_request, coap_pdu_code_t request_method)
int | coap_block_check_lg_xmit_timeouts (coap_session_t *session, coap_tick_t now, coap_tick_t *tim_rem)
static int | check_if_received_block (coap_rblock_t *rec_blocks, uint32_t block_num)
static int | check_all_blocks_in (coap_rblock_t *rec_blocks, size_t total_blocks)
void | coap_block_delete_lg_xmit (coap_session_t *session, coap_lg_xmit_t *lg_xmit)
static int | update_received_blocks (coap_rblock_t *rec_blocks, uint32_t block_num)
coap_binary_t * | coap_block_build_body (coap_binary_t *body_data, size_t length, const uint8_t *data, size_t offset, size_t total)
| Re-assemble payloads into a body.

## Detailed Description

CoAP Block handling.

Definition in file coap_block.c.

## Macro Definition Documentation

## MAX_BLK_LEN

#define MAX_BLK_LEN (((1UL << 20) - 1) * (1 << (6 + 4)))

## min

#define min | ( |  | a,
|  |  | b )

Value:
((a) < (b) ? (a) : (b))

Definition at line 19 of file coap_block.c.

## Function Documentation

## check_all_blocks_in()

int check_all_blocks_in | ( | coap_rblock_t * | rec_blocks,
|  | size_t | total_blocks )

static

Definition at line 1601 of file coap_block.c.

## check_if_received_block()

int check_if_received_block | ( | coap_rblock_t * | rec_blocks,
|  | uint32_t | block_num )

static

Definition at line 1575 of file coap_block.c.

## coap_add_data_large_internal()

int coap_add_data_large_internal | ( | coap_session_t * | session,
|  | const coap_pdu_t * | request,
|  | coap_pdu_t * | pdu,
|  | coap_resource_t * | resource,
|  | const coap_string_t * | query,
|  | int | maxage,
|  | uint64_t | etag,
|  | size_t | length,
|  | const uint8_t * | data,
|  | coap_release_large_data_t | release_func,
|  | void * | app_ptr,
|  | int | single_request,
|  | coap_pdu_code_t | request_method )

static

Definition at line 635 of file coap_block.c.

Here is the call graph for this function:

## full_match()

COAP_STATIC_INLINE int full_match | ( | const uint8_t * | a,
|  | size_t | alen,
|  | const uint8_t * | b,
|  | size_t | blen )

Definition at line 432 of file coap_block.c.

## setup_block_b()

int setup_block_b | ( | coap_session_t * | session,
|  | coap_pdu_t * | pdu,
|  | coap_block_b_t * | block,
|  | unsigned int | num,
|  | unsigned int | blk_size,
|  | size_t | total )

static

Definition at line 124 of file coap_block.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## update_received_blocks()

int update_received_blocks | ( | coap_rblock_t * | rec_blocks,
|  | uint32_t | block_num )

static

Definition at line 2724 of file coap_block.c.

Here is the call graph for this function: