From 093449a7287a7feb2e90c5120d9e5cc974b8a52e Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Thu, 22 Aug 2024 17:50:43 +0800 Subject: [PATCH] remvoe keypad.c --- booster/ringbuf.c | 111 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 65 insertions(+), 46 deletions(-) diff --git a/booster/ringbuf.c b/booster/ringbuf.c index f79d496..37c76f6 100644 --- a/booster/ringbuf.c +++ b/booster/ringbuf.c @@ -1,30 +1,54 @@ -/******************************************************************************** - * Copyright: (C) 2021 LingYun IoT System Studio +/********************************************************************************* + * Copyright: (C) 2023 LingYun IoT System Studio. * All rights reserved. * - * Filename: ringbuf.h - * Description: This head file + * Filename: ringbuf.c + * Description: This file is common ring buffer API functions * - * Version: 1.0.0(2021年04月29日) + * Version: 1.0.0(11/08/23) * Author: Guo Wenxue <guowenxue@gmail.com> - * ChangeLog: 1, Release initial version on "2021年04月29日 12时18分32秒" + * ChangeLog: 1, Release initial version on "11/08/23 16:18:43" * ********************************************************************************/ + #include <string.h> #include <assert.h> #include "ringbuf.h" -void rb_init (struct ring_buffer *ring, unsigned char* buff, int size) +void rb_init(struct ring_buffer *rb, unsigned char *buf, int size) { - memset (ring, 0, sizeof (struct ring_buffer)); - ring->rd_pointer = 0; - ring->wr_pointer = 0; - ring->buffer= buff; - ring->size = size; + memset(rb, 0, sizeof (struct ring_buffer)); + rb->rd_pointer = 0; + rb->wr_pointer = 0; + rb->buffer= buf; + rb->size = size; } +void rb_clear(struct ring_buffer *rb) +{ + memset(rb->buffer, 0, rb->size); + rb->rd_pointer=0; + rb->wr_pointer=0; +} -int rb_write (struct ring_buffer *rb, unsigned char * buf, int len) +int rb_data_size(struct ring_buffer *rb) +{ + return ((rb->wr_pointer - rb->rd_pointer) & (rb->size-1)); +} + +int rb_free_size(struct ring_buffer *rb) +{ + return (rb->size - 1 - rb_data_size(rb)); +} + +unsigned char rb_peek(struct ring_buffer *rb, int index) +{ + assert(index < rb_data_size(rb)); + + return rb->buffer[((rb->rd_pointer + index) % rb->size)]; +} + +int rb_write(struct ring_buffer *rb, unsigned char *buf, int len) { int total; int i; @@ -50,57 +74,52 @@ return total; } - -int rb_free_size (struct ring_buffer *rb) -{ - return (rb->size - 1 - rb_data_size(rb)); -} - - -int rb_read (struct ring_buffer *rb, unsigned char * buf, int max) +int rb_read(struct ring_buffer *rb, unsigned char *buf, int bytes) { int total; int i; - /* total = len = min(used, len) */ total = rb_data_size(rb); - if(max > total) - max = total; - else - total = max; - + if(bytes > total) + bytes = total; i = rb->rd_pointer; - if(i + max > rb->size) + if(i + bytes > rb->size) { memcpy(buf, rb->buffer + i, rb->size - i); buf += rb->size - i; - max -= rb->size - i; + bytes -= rb->size - i; i = 0; } - memcpy(buf, rb->buffer + i, max); - rb->rd_pointer = i + max; + memcpy(buf, rb->buffer + i, bytes); + rb->rd_pointer = i + bytes; return total; } -int rb_data_size (struct ring_buffer *rb) +int rb_copy(struct ring_buffer *rb, unsigned char *buf, int bytes) { - return ((rb->wr_pointer - rb->rd_pointer) & (rb->size-1)); + int total; + int i; + + total = rb_data_size(rb); + + if(bytes > total) + bytes = total; + + i = rb->rd_pointer; + if(i + bytes > rb->size) + { + memcpy(buf, rb->buffer + i, rb->size - i); + buf += rb->size - i; + bytes -= rb->size - i; + i = 0; + } + + memcpy(buf, rb->buffer + i, bytes); + + return total; } -void rb_clear (struct ring_buffer *rb) -{ - memset(rb->buffer,0,rb->size); - rb->rd_pointer=0; - rb->wr_pointer=0; -} - -unsigned char rb_peek(struct ring_buffer* rb, int index) -{ - assert(index < rb_data_size(rb)); - - return rb->buffer[((rb->rd_pointer + index) % rb->size)]; -} -- Gitblit v1.9.1