net/nanocoap: optimize determination of exponent for block szx
This commit is contained in:
parent
e22d4729e1
commit
2dc4209c0e
@ -26,6 +26,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "bitarithm.h"
|
||||||
#include "net/nanocoap.h"
|
#include "net/nanocoap.h"
|
||||||
|
|
||||||
#define ENABLE_DEBUG (0)
|
#define ENABLE_DEBUG (0)
|
||||||
@ -655,16 +656,15 @@ size_t coap_put_option(uint8_t *buf, uint16_t lastonum, uint16_t onum, const uin
|
|||||||
|
|
||||||
static unsigned _size2szx(size_t size)
|
static unsigned _size2szx(size_t size)
|
||||||
{
|
{
|
||||||
unsigned szx = 0;
|
|
||||||
assert(size <= 1024);
|
assert(size <= 1024);
|
||||||
|
|
||||||
while (size) {
|
/* We must wait to subract the szx offset of 4 until after the assert below.
|
||||||
size = size >> 1;
|
* Input should be a power of two, but if not it may have a stray low order
|
||||||
szx++;
|
* '1' bit that would invalidate the subtraction. */
|
||||||
}
|
unsigned szx = bitarithm_lsb(size);
|
||||||
/* Size exponent + 1 */
|
|
||||||
assert(szx >= 5);
|
assert(szx >= 4);
|
||||||
return szx - 5;
|
return szx - 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned _slicer2blkopt(coap_block_slicer_t *slicer, bool more)
|
static unsigned _slicer2blkopt(coap_block_slicer_t *slicer, bool more)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user