libcoap 4.3.1
block.c File Reference

CoAP Block handling. More...

+ Include dependency graph for block.c:

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

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, 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, 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_tcoap_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...
 
void coap_check_code_lg_xmit (coap_session_t *session, coap_pdu_t *response, coap_resource_t *resource, coap_string_t *query, coap_pdu_code_t request_method)
 The function checks that the code in a newly formed lg_xmit created by coap_add_data_large_response() is updated. More...
 

Detailed Description

CoAP Block handling.

Definition in file block.c.

Macro Definition Documentation

◆ MAX_BLK_LEN

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

◆ min

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

Definition at line 19 of file block.c.

◆ STATE_TOKEN_BASE

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

Definition at line 22 of file block.c.

◆ STATE_TOKEN_FULL

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

Definition at line 24 of file block.c.

◆ STATE_TOKEN_RETRY

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

Definition at line 23 of file 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 970 of file 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 957 of file block.c.

◆ coap_add_data_large_internal()

static int coap_add_data_large_internal ( coap_session_t session,
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,
coap_pdu_code_t  request_method 
)
static

Definition at line 436 of file 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 373 of file block.c.

+ Here is the caller graph for this function:

◆ 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 111 of file block.c.

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

◆ update_received_blocks()

static int update_received_blocks ( coap_rblock_t rec_blocks,
uint32_t  block_num 
)
static

Definition at line 1400 of file block.c.

+ Here is the call graph for this function: