typedef struct {
uint8_t buffer_size;
uint8_t fillcount;
- uint8_t* buffer;
- uint8_t* head;
- uint8_t* tail;
- uint8_t* top;
+ uint8_t *buffer;
+ uint8_t *head;
+ uint8_t *tail;
+ uint8_t *top;
} circularbytebuffer_t;
*/
/******************************************************************************/
/*
- * uint8_t circularbytebuffer_init(uint8_t buffersize, circularbytebuffer_t* cb){
+ * uint8_t circularbytebuffer_init(uint8_t buffersize, circularbytebuffer_t *cb){
* cb->buffer_size = buffersize;
* cb->buffer = malloc(buffersize);
* cb->head = cb->tail = cb->buffer;
/******************************************************************************/
/*
- * void circularbytebuffer_free(circularbytebuffer_t* cb){
+ * void circularbytebuffer_free(circularbytebuffer_t *cb){
* free(cb->buffer);
* }
*
/******************************************************************************/
/*
- * void circularbytebuffer_init2(uint8_t buffersize, circularbytebuffer_t* cb, void* buffer){
+ * void circularbytebuffer_init2(uint8_t buffersize, circularbytebuffer_t *cb, void *buffer){
* cb->buffer_size = buffersize;
* cb->buffer = buffer
* cb->head = cb->tail = cb->buffer;
/******************************************************************************/
/*
- * uint8_t circularbytebuffer_cnt(circularbytebuffer_t* cb){
+ * uint8_t circularbytebuffer_cnt(circularbytebuffer_t *cb){
* return (cb->fillcount);
* }
*
/******************************************************************************/
/*
- * uint16_t circularbytebuffer_get_lifo(circularbytebuffer_t* cb){
+ * uint16_t circularbytebuffer_get_lifo(circularbytebuffer_t *cb){
* uint8_t ret;
* if(cb->fillcount==0)
* return 0xffff;
/******************************************************************************/
/*
- * uint16_t circularbytebuffer_get_fifo(circularbytebuffer_t* cb){
+ * uint16_t circularbytebuffer_get_fifo(circularbytebuffer_t *cb){
* uint8_t ret;
* if(cb->fillcount==0)
* return 0xffff;
/******************************************************************************/
/*
- * uint8_t circularbytebuffer_append(uint8_t elem, circularbytebuffer_t* cb){
+ * uint8_t circularbytebuffer_append(uint8_t elem, circularbytebuffer_t *cb){
* if(cb->fillcount==cb->buffer_size)
* return 1;
* cb->fillcount++;
ldd r23, Z+BUFFER_SIZE_OFFSET
cp r22, r23
brne 10f
+5:
ldi r24, 1
ret
10:
/******************************************************************************/
/*
- * uint8_t circularbytebuffer_push(uint8_t elem, circularbytebuffer_t* cb){
+ * uint8_t circularbytebuffer_push(uint8_t elem, circularbytebuffer_t *cb){
* if(cb->fillcount==cb->buffer_size)
* return 1;
* cb->fillcount++;
ldd r22, Z+FILLCOUNT_OFFSET
ldd r23, Z+BUFFER_SIZE_OFFSET
cp r22, r23
- brne 10f
- ldi r24, 1
- ret
+ brlo 10f
+ rjmp 5b
+; ldi r24, 1
+; ret
10:
- clt
- tst r22
- brne 11f
- set
+; clt
+; tst r22
+; brne 11f
+; set
11:
inc r22
std Z+FILLCOUNT_OFFSET, r22
20:
std Z+HEAD_OFFSET, r26
std Z+HEAD_OFFSET+1, r27
- brtc 30b
- std Z+TAIL_OFFSET, r26
- std Z+TAIL_OFFSET+1, r27
+; brtc 30b
+; std Z+TAIL_OFFSET, r26
+; std Z+TAIL_OFFSET+1, r27
rjmp 30b