Skip to content

Commit 59bd8b8

Browse files
committed
added mbuf_remove_range() to remove data other than at index 0
1 parent 986d287 commit 59bd8b8

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

include/mgos_utils.h

+3
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ void mgos_system_restart_after(int delay_ms);
3838
/* Return random number in a given range. */
3939
float mgos_rand_range(float from, float to);
4040

41+
/* Removes 'data_size' bytes from index of the buffer */
42+
size_t mbuf_remove_range(struct mbuf *, size_t index, size_t data_size);
43+
4144
#ifdef __cplusplus
4245
}
4346
#endif

src/mgos_utils.c

+16
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,22 @@ float mgos_rand_range(float from, float to) {
4343
return from + (((float) (to - from)) / RAND_MAX * rand());
4444
}
4545

46+
47+
size_t mbuf_remove_range(struct mbuf *mb, size_t i, size_t n) WEAK;
48+
size_t mbuf_remove_range(struct mbuf *mb, size_t i, size_t n) {
49+
size_t ret = 0;
50+
if (n > 0 && n <= (mb->len - i)) {
51+
memmove(&mb->buf[i], &mb->buf[i] + n, mb->len - n);
52+
mb->len -= n;
53+
ret = n;
54+
}
55+
else if (n > 0 && n >= (mb->len - i)) {
56+
ret = mb->len - i;
57+
mb->len -= ret;
58+
}
59+
return ret;
60+
}
61+
4662
#if CS_ENABLE_STDIO
4763
/*
4864
* Intended for ffi

0 commit comments

Comments
 (0)