diff --git a/sys/net/application_layer/nanocoap/nanocoap.c b/sys/net/application_layer/nanocoap/nanocoap.c index 1df28c123a..4a399298c4 100644 --- a/sys/net/application_layer/nanocoap/nanocoap.c +++ b/sys/net/application_layer/nanocoap/nanocoap.c @@ -641,30 +641,33 @@ size_t coap_put_option_block1(uint8_t *buf, uint16_t lastonum, unsigned blknum, return coap_put_option_block(buf, lastonum, blknum, szx, more, COAP_OPT_BLOCK1); } -int coap_get_block1(coap_pkt_t *pkt, coap_block1_t *block1) +int coap_get_block(coap_pkt_t *pkt, coap_block1_t *block, uint16_t blkopt) { uint32_t blknum; unsigned szx; - block1->more = coap_get_blockopt(pkt, COAP_OPT_BLOCK1, &blknum, &szx); - if (block1->more >= 0) { - block1->offset = blknum << (szx + 4); + block->more = coap_get_blockopt(pkt, blkopt, &blknum, &szx); + if (block->more >= 0) { + block->offset = blknum << (szx + 4); } else { - block1->offset = 0; + block->offset = 0; } - block1->blknum = blknum; - block1->szx = szx; + block->blknum = blknum; + block->szx = szx; - return (block1->more >= 0); + return (block->more >= 0); } -int coap_get_block2(coap_pkt_t *pkt, coap_block1_t *block2) +int coap_get_block1(coap_pkt_t *pkt, coap_block1_t *block) { - block2->more = coap_get_blockopt(pkt, COAP_OPT_BLOCK2, &block2->blknum, - &block2->szx); - return (block2->more >= 0); + return coap_get_block(pkt, block, COAP_OPT_BLOCK1); +} + +int coap_get_block2(coap_pkt_t *pkt, coap_block1_t *block) +{ + return coap_get_block(pkt, block, COAP_OPT_BLOCK2); } size_t coap_put_block1_ok(uint8_t *pkt_pos, coap_block1_t *block1, uint16_t lastonum)