|
19 | 19 |
|
20 | 20 | #include "irq.h" |
21 | 21 | #include "tsrb.h" |
22 | | - |
23 | | -static void _push(tsrb_t *rb, uint8_t c) |
24 | | -{ |
25 | | - rb->buf[rb->writes++ & (rb->size - 1)] = c; |
26 | | -} |
27 | | - |
28 | | -static uint8_t _pop(tsrb_t *rb) |
29 | | -{ |
30 | | - return rb->buf[rb->reads++ & (rb->size - 1)]; |
31 | | -} |
32 | | - |
33 | | -static uint8_t _peek(tsrb_t *rb, unsigned int idx) |
34 | | -{ |
35 | | - return rb->buf[(rb->reads + idx) & (rb->size - 1)]; |
36 | | -} |
| 22 | +#include "turb.h" |
37 | 23 |
|
38 | 24 | int tsrb_get_one(tsrb_t *rb) |
39 | 25 | { |
40 | | - int retval = -1; |
41 | 26 | unsigned irq_state = irq_disable(); |
42 | | - if (!tsrb_empty(rb)) { |
43 | | - retval = _pop(rb); |
44 | | - } |
| 27 | + int retval = turb_get_one(rb); |
45 | 28 | irq_restore(irq_state); |
46 | 29 | return retval; |
47 | 30 | } |
48 | 31 |
|
49 | 32 | int tsrb_peek_one(tsrb_t *rb) |
50 | 33 | { |
51 | | - int retval = -1; |
52 | 34 | unsigned irq_state = irq_disable(); |
53 | | - if (!tsrb_empty(rb)) { |
54 | | - retval = _peek(rb, 0); |
55 | | - } |
| 35 | + int retval = turb_peek_one(rb); |
56 | 36 | irq_restore(irq_state); |
57 | 37 | return retval; |
58 | 38 | } |
59 | 39 |
|
60 | 40 | int tsrb_get(tsrb_t *rb, uint8_t *dst, size_t n) |
61 | 41 | { |
62 | | - size_t tmp = n; |
63 | 42 | unsigned irq_state = irq_disable(); |
64 | | - while (tmp && !tsrb_empty(rb)) { |
65 | | - *dst++ = _pop(rb); |
66 | | - tmp--; |
67 | | - } |
| 43 | + int cnt = turb_get(rb, dst, n); |
68 | 44 | irq_restore(irq_state); |
69 | | - return (n - tmp); |
| 45 | + return cnt; |
70 | 46 | } |
71 | 47 |
|
72 | 48 | int tsrb_peek(tsrb_t *rb, uint8_t *dst, size_t n) |
73 | 49 | { |
74 | | - size_t idx = 0; |
75 | 50 | unsigned irq_state = irq_disable(); |
76 | | - unsigned int avail = tsrb_avail(rb); |
77 | | - while (idx < n && idx != avail) { |
78 | | - *dst++ = _peek(rb, idx++); |
79 | | - } |
| 51 | + int idx = turb_peek(rb, dst, n); |
80 | 52 | irq_restore(irq_state); |
81 | 53 | return idx; |
82 | 54 | } |
83 | 55 |
|
84 | 56 | int tsrb_drop(tsrb_t *rb, size_t n) |
85 | 57 | { |
86 | | - size_t tmp = n; |
87 | 58 | unsigned irq_state = irq_disable(); |
88 | | - while (tmp && !tsrb_empty(rb)) { |
89 | | - _pop(rb); |
90 | | - tmp--; |
91 | | - } |
| 59 | + int cnt = turb_drop(rb, n); |
92 | 60 | irq_restore(irq_state); |
93 | | - return (n - tmp); |
| 61 | + return cnt; |
94 | 62 | } |
95 | 63 |
|
96 | 64 | int tsrb_add_one(tsrb_t *rb, uint8_t c) |
97 | 65 | { |
98 | | - int retval = -1; |
99 | 66 | unsigned irq_state = irq_disable(); |
100 | | - if (!tsrb_full(rb)) { |
101 | | - _push(rb, c); |
102 | | - retval = 0; |
103 | | - } |
| 67 | + int retval = turb_add_one(rb, c); |
104 | 68 | irq_restore(irq_state); |
105 | 69 | return retval; |
106 | 70 | } |
107 | 71 |
|
108 | 72 | int tsrb_add(tsrb_t *rb, const uint8_t *src, size_t n) |
109 | 73 | { |
110 | | - size_t tmp = n; |
111 | 74 | unsigned irq_state = irq_disable(); |
112 | | - while (tmp && !tsrb_full(rb)) { |
113 | | - _push(rb, *src++); |
114 | | - tmp--; |
115 | | - } |
| 75 | + int cnt = turb_add(rb, src, n); |
116 | 76 | irq_restore(irq_state); |
117 | | - return (n - tmp); |
| 77 | + return cnt; |
118 | 78 | } |
0 commit comments