OSDN Git Service

11/11/30 12H serial csv out.
[scilog/cpu2010.git] / ring.c
1 #include "ring.h"
2
3 /*
4         Ring Buffer用基本機能
5         write位置
6         read位置
7 */
8 unsigned char   r_write;
9 unsigned char   r_read;
10 unsigned char   r_num;
11
12 /*
13 */
14 void ring_init(void)
15 {
16     r_write = 0;
17     r_read = 0;
18     r_num = RING_NUM;
19 }
20 /*
21     読み出し位置
22 */
23 void ring_read_set(unsigned char i)
24 {
25     r_read = i;
26 }
27 void ring_read_plus(void)
28 {
29     r_read++;
30     if (r_read >= r_num) r_read = 0;
31 }
32
33 // 読み込んでいないデータ数
34 unsigned char ring_num_get()
35 {
36     signed char i;
37
38     i = (signed char)r_write - (signed char)r_read;
39     if (i < 0) i += r_num;
40     return (unsigned char)i;
41 }
42
43 /*
44         パケットバッファフル?
45         1=Full
46         0=not Full
47 */
48 unsigned char ring_is_full(void)
49 {
50     if (ring_num_get() >= r_num - 1) return 1;
51     return 0;
52 }