libcoap 4.3.2rc2

Macros | Functions
coap_block.c File Reference

CoAP Block handling. More...

`#include "coap3/coap_internal.h"`

Go to the source code of this file.

## Macros
#define | min(a, b) ((a) < (b) ? (a) : (b))
#define | STATE_TOKEN_BASE(t) ((t) & 0xffffffffffffULL)
#define | STATE_TOKEN_RETRY(t) ((uint64_t)(t) >> 48)
#define | STATE_TOKEN_FULL(t, r) (STATE_TOKEN_BASE(t) + ((uint64_t)(r) << 48))
#define | MAX_BLK_LEN (((1 << 20) - 1) * (1 << (6 + 4)))

## Functions
int | coap_q_block_is_supported (void)
| Returns `1` if libcoap was built with option Q-BlockX support, `0` otherwise. More...
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`. More...
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`. More...
int | coap_get_block (const coap_pdu_t *pdu, coap_option_num_t number, coap_block_t *block)
| Initializes `block` from `pdu`. More...
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`. More...
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`. More...
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`. More...
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`. More...
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. More...
void | coap_context_set_block_mode (coap_context_t *context, uint8_t block_mode)
| Set the context level CoAP block handling bits for handling RFC7959. More...
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. More...

## Detailed Description

CoAP Block handling.

Definition in file coap_block.c.

## Macro Definition Documentation

## ◆ MAX_BLK_LEN

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

## ◆ min

#define min | ( |  | a,
|  |  | b
| ) |  | ((a) < (b) ? (a) : (b))

Definition at line 19 of file coap_block.c.

## ◆ STATE_TOKEN_BASE

#define STATE_TOKEN_BASE | ( |  | t | ) | ((t) & 0xffffffffffffULL)

Definition at line 22 of file coap_block.c.

## ◆ STATE_TOKEN_FULL

#define STATE_TOKEN_FULL | ( |  | t,
|  |  | r
| ) |  | (STATE_TOKEN_BASE(t) + ((uint64_t)(r) << 48))

Definition at line 24 of file coap_block.c.

## ◆ STATE_TOKEN_RETRY

#define STATE_TOKEN_RETRY | ( |  | t | ) | ((uint64_t)(t) >> 48)

Definition at line 23 of file coap_block.c.

## Function Documentation

## ◆ check_all_blocks_in()

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

Definition at line 1450 of file coap_block.c.

## ◆ check_if_received_block()

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

Definition at line 1437 of file coap_block.c.

## ◆ coap_add_data_large_internal()

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
| ) |  |
| static

Definition at line 592 of file coap_block.c.

## ◆ 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 397 of file coap_block.c.

## ◆ setup_block_b()

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
| ) |  |
| static

Definition at line 128 of file coap_block.c.

## ◆ update_received_blocks()

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

Definition at line 2510 of file coap_block.c.