]>
cloudbase.mooo.com Git - z180-stamp.git/blob - include/ring.h
2 * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
4 * SPDX-License-Identifier: GPL-2.0+
13 volatile uint_fast8_t begin
;
14 volatile uint_fast8_t end
;
19 void ring_init(struct ring
*ring
, uint8_t *buf
, int size
)
22 ring
->mask
= (size
-1) & 0xff;
28 int ring_write_ch(struct ring
*ring
, uint8_t ch
)
30 uint_fast8_t ep
= ring
->end
;
33 ep
= (ep
+ 1) & ring
->mask
;
35 if ((ep
) != ring
->begin
) {
45 int ring_write(struct ring
*ring
, uint8_t *data
, int size
)
49 for (i
= 0; i
< size
; i
++) {
50 if (ring_write_ch(ring
, data
[i
]) < 0)
59 int ring_read_ch(struct ring
*ring
)
62 uint_fast8_t bp
= ring
->begin
;
64 if (bp
!= ring
->end
) {
66 ring
->begin
= (bp
+ 1) & ring
->mask
;
74 int_fast8_t ring_is_empty(struct ring
*ring
)
76 return ring
->begin
== ring
->end
;