]>
cloudbase.mooo.com Git - z180-stamp.git/blob - include/ring.h
7 volatile uint_fast8_t begin
;
8 volatile uint_fast8_t end
;
13 void ring_init(struct ring
*ring
, uint8_t *buf
, int size
)
16 ring
->mask
= (size
-1) & 0xff;
22 int ring_write_ch(struct ring
*ring
, uint8_t ch
)
24 uint_fast8_t ep
= ring
->end
;
27 ep
= (ep
+ 1) & ring
->mask
;
29 if ((ep
) != ring
->begin
) {
39 int ring_write(struct ring
*ring
, uint8_t *data
, int size
)
43 for (i
= 0; i
< size
; i
++) {
44 if (ring_write_ch(ring
, data
[i
]) < 0)
53 int ring_read_ch(struct ring
*ring
)
56 uint_fast8_t bp
= ring
->begin
;
58 if (bp
!= ring
->end
) {
60 ring
->begin
= (bp
+ 1) & ring
->mask
;
68 int_fast8_t ring_is_empty(struct ring
*ring
)
70 return ring
->begin
== ring
->end
;