Lines Matching refs:circle_buf

35 static void circle_buf_prepare_empty(lv_circle_buf_t * circle_buf);
55 lv_circle_buf_t * circle_buf = lv_malloc(sizeof(lv_circle_buf_t)); in lv_circle_buf_create() local
56 LV_ASSERT_MALLOC(circle_buf); in lv_circle_buf_create()
58 if(circle_buf == NULL) { in lv_circle_buf_create()
62 lv_array_init(&circle_buf->array, capacity, element_size); in lv_circle_buf_create()
63 circle_buf->head = 0; in lv_circle_buf_create()
64 circle_buf->tail = 0; in lv_circle_buf_create()
65 circle_buf->inner_alloc = true; in lv_circle_buf_create()
67 circle_buf_prepare_empty(circle_buf); in lv_circle_buf_create()
69 return circle_buf; in lv_circle_buf_create()
76 lv_circle_buf_t * circle_buf = lv_malloc(sizeof(lv_circle_buf_t)); in lv_circle_buf_create_from_buf() local
77 LV_ASSERT_MALLOC(circle_buf); in lv_circle_buf_create_from_buf()
79 if(circle_buf == NULL) { in lv_circle_buf_create_from_buf()
83 lv_array_init_from_buf(&circle_buf->array, buf, capacity, element_size); in lv_circle_buf_create_from_buf()
84 circle_buf->head = 0; in lv_circle_buf_create_from_buf()
85 circle_buf->tail = 0; in lv_circle_buf_create_from_buf()
86 circle_buf->inner_alloc = false; in lv_circle_buf_create_from_buf()
88 circle_buf_prepare_empty(circle_buf); in lv_circle_buf_create_from_buf()
90 return circle_buf; in lv_circle_buf_create_from_buf()
100 lv_circle_buf_t * circle_buf = lv_malloc(sizeof(lv_circle_buf_t)); in lv_circle_buf_create_from_array() local
101 LV_ASSERT_MALLOC(circle_buf); in lv_circle_buf_create_from_array()
103 if(circle_buf == NULL) { in lv_circle_buf_create_from_array()
107 circle_buf->array = *array; in lv_circle_buf_create_from_array()
108 circle_buf->head = 0; in lv_circle_buf_create_from_array()
109 circle_buf->tail = 0; in lv_circle_buf_create_from_array()
110 circle_buf->inner_alloc = false; in lv_circle_buf_create_from_array()
112 circle_buf_prepare_empty(circle_buf); in lv_circle_buf_create_from_array()
114 return circle_buf; in lv_circle_buf_create_from_array()
117 lv_result_t lv_circle_buf_resize(lv_circle_buf_t * circle_buf, const uint32_t capacity) in lv_circle_buf_resize() argument
119 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_resize()
121 if(lv_array_resize(&circle_buf->array, capacity) == false) { in lv_circle_buf_resize()
125 circle_buf->head = 0; in lv_circle_buf_resize()
126 circle_buf->tail = 0; in lv_circle_buf_resize()
128 circle_buf_prepare_empty(circle_buf); in lv_circle_buf_resize()
133 void lv_circle_buf_destroy(lv_circle_buf_t * circle_buf) in lv_circle_buf_destroy() argument
135 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_destroy()
137 lv_array_deinit(&circle_buf->array); in lv_circle_buf_destroy()
139 lv_free(circle_buf); in lv_circle_buf_destroy()
142 uint32_t lv_circle_buf_size(const lv_circle_buf_t * circle_buf) in lv_circle_buf_size() argument
144 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_size()
146 return circle_buf->tail - circle_buf->head; in lv_circle_buf_size()
149 uint32_t lv_circle_buf_capacity(const lv_circle_buf_t * circle_buf) in lv_circle_buf_capacity() argument
151 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_capacity()
153 return lv_array_capacity(&circle_buf->array); in lv_circle_buf_capacity()
156 uint32_t lv_circle_buf_remain(const lv_circle_buf_t * circle_buf) in lv_circle_buf_remain() argument
158 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_remain()
160 return lv_circle_buf_capacity(circle_buf) - lv_circle_buf_size(circle_buf); in lv_circle_buf_remain()
163 bool lv_circle_buf_is_empty(const lv_circle_buf_t * circle_buf) in lv_circle_buf_is_empty() argument
165 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_is_empty()
167 return !lv_circle_buf_size(circle_buf); in lv_circle_buf_is_empty()
170 bool lv_circle_buf_is_full(const lv_circle_buf_t * circle_buf) in lv_circle_buf_is_full() argument
172 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_is_full()
174 return !lv_circle_buf_remain(circle_buf); in lv_circle_buf_is_full()
177 void lv_circle_buf_reset(lv_circle_buf_t * circle_buf) in lv_circle_buf_reset() argument
179 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_reset()
181 lv_array_clear(&circle_buf->array); in lv_circle_buf_reset()
182 circle_buf->head = 0; in lv_circle_buf_reset()
183 circle_buf->tail = 0; in lv_circle_buf_reset()
186 void * lv_circle_buf_head(const lv_circle_buf_t * circle_buf) in lv_circle_buf_head() argument
188 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_head()
190 return lv_array_at(&circle_buf->array, in lv_circle_buf_head()
191 circle_buf->head % lv_circle_buf_capacity(circle_buf)); in lv_circle_buf_head()
194 void * lv_circle_buf_tail(const lv_circle_buf_t * circle_buf) in lv_circle_buf_tail() argument
196 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_tail()
198 return lv_array_at(&circle_buf->array, in lv_circle_buf_tail()
199 circle_buf->tail % lv_circle_buf_capacity(circle_buf)); in lv_circle_buf_tail()
202 lv_result_t lv_circle_buf_read(lv_circle_buf_t * circle_buf, void * data) in lv_circle_buf_read() argument
204 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_read()
206 if(lv_circle_buf_is_empty(circle_buf)) { in lv_circle_buf_read()
207 circle_buf->head = 0; in lv_circle_buf_read()
208 circle_buf->tail = 0; in lv_circle_buf_read()
212 lv_circle_buf_peek_at(circle_buf, 0, data); in lv_circle_buf_read()
213 circle_buf->head++; in lv_circle_buf_read()
218 lv_result_t lv_circle_buf_write(lv_circle_buf_t * circle_buf, const void * data) in lv_circle_buf_write() argument
220 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_write()
222 if(lv_circle_buf_is_full(circle_buf)) { in lv_circle_buf_write()
226 … lv_array_assign(&circle_buf->array, circle_buf->tail % lv_circle_buf_capacity(circle_buf), data); in lv_circle_buf_write()
227 circle_buf->tail++; in lv_circle_buf_write()
232 uint32_t lv_circle_buf_fill(lv_circle_buf_t * circle_buf, uint32_t count, lv_circle_buf_fill_cb_t f… in lv_circle_buf_fill() argument
235 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_fill()
239 while(count > 0 && !lv_circle_buf_is_full(circle_buf)) { in lv_circle_buf_fill()
240 void * data = lv_circle_buf_tail(circle_buf); in lv_circle_buf_fill()
241 … if(fill_cb(data, circle_buf->array.element_size, (int32_t)filled, user_data) == LV_RESULT_OK) { in lv_circle_buf_fill()
242 circle_buf->tail++; in lv_circle_buf_fill()
253 lv_result_t lv_circle_buf_skip(lv_circle_buf_t * circle_buf) in lv_circle_buf_skip() argument
255 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_skip()
257 if(lv_circle_buf_is_empty(circle_buf)) { in lv_circle_buf_skip()
258 circle_buf->head = 0; in lv_circle_buf_skip()
259 circle_buf->tail = 0; in lv_circle_buf_skip()
263 circle_buf->head++; in lv_circle_buf_skip()
268 lv_result_t lv_circle_buf_peek(const lv_circle_buf_t * circle_buf, void * data) in lv_circle_buf_peek() argument
270 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_peek()
273 return lv_circle_buf_peek_at(circle_buf, 0, data); in lv_circle_buf_peek()
276 lv_result_t lv_circle_buf_peek_at(const lv_circle_buf_t * circle_buf, const uint32_t index, void * … in lv_circle_buf_peek_at() argument
278 LV_ASSERT_NULL(circle_buf); in lv_circle_buf_peek_at()
281 …const uint32_t real_index = (index % lv_circle_buf_size(circle_buf) + circle_buf->head) % lv_circl… in lv_circle_buf_peek_at()
282 circle_buf); in lv_circle_buf_peek_at()
283 lv_memcpy(data, lv_array_at(&circle_buf->array, real_index), circle_buf->array.element_size); in lv_circle_buf_peek_at()
292 static void circle_buf_prepare_empty(lv_circle_buf_t * circle_buf) in circle_buf_prepare_empty() argument
294 …const uint32_t required = lv_array_capacity(&circle_buf->array) - lv_array_size(&circle_buf->array… in circle_buf_prepare_empty()
295 for(uint32_t i = 0; i < required; i++) lv_array_push_back(&circle_buf->array, NULL); in circle_buf_prepare_empty()