]> rtime.felk.cvut.cz Git - eurobot/public.git/blob - src/lidars/hokuyo/lib/ring_buffer.h
Create LIDAR lib for hadling both rangefinders - SICK and Hokuyo
[eurobot/public.git] / src / lidars / hokuyo / lib / ring_buffer.h
1 #ifndef RING_BUFFER_H\r
2 #define RING_BUFFER_H\r
3 \r
4 /*!\r
5   \file\r
6   \brief \83\8a\83\93\83O\83o\83b\83t\83@\r
7 \r
8   \author Satofumi KAMIMURA\r
9 \r
10   $Id: ring_buffer.h 1557 2009-12-01 12:38:06Z satofumi $\r
11 */\r
12 \r
13 \r
14 //! \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8aÇ\97\9d\8fî\95ñ\r
15 typedef struct\r
16 {\r
17   char *buffer;                 //!< \83o\83b\83t\83@\82Ö\82Ì\83|\83C\83\93\83^\r
18   int buffer_size;              //!< \83o\83b\83t\83@\83T\83C\83Y\r
19   int first;                    //!< \83o\83b\83t\83@\82Ì\90æ\93ª\88Ê\92u\r
20   int last;                     //!< \83o\83b\83t\83@\82Ì\8dÅ\8fI\88Ê\92u\r
21 } ringBuffer_t;\r
22 \r
23 \r
24 /*!\r
25   \brief \8f\89\8aú\89»\r
26 \r
27   \param[in] ring \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8d\\91¢\91Ì\r
28   \param[in] buffer \8a\84\82è\93\96\82Ä\82é\83o\83b\83t\83@\r
29   \param[in] shift_length \83o\83b\83t\83@\83T\83C\83Y\82Ì 2 \82Ì\8fæ\90\94\r
30 */\r
31 extern void ring_initialize(ringBuffer_t *ring,\r
32                             char *buffer, const int shift_length);\r
33 \r
34 \r
35 /*!\r
36   \brief \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\83N\83\8a\83A\r
37 \r
38   \param[in] ring \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8d\\91¢\91Ì\r
39 */\r
40 extern void ring_clear(ringBuffer_t *ring);\r
41 \r
42 \r
43 /*!\r
44   \brief \8ai\94[\83f\81[\83^\90\94\82ð\95Ô\82·\r
45 \r
46   \param[in] ring \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8d\\91¢\91Ì\r
47 */\r
48 extern int ring_size(const ringBuffer_t *ring);\r
49 \r
50 \r
51 /*!\r
52   \brief \8dÅ\91å\82Ì\8ai\94[\83f\81[\83^\90\94\82ð\95Ô\82·\r
53 \r
54   \param[in] ring \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8d\\91¢\91Ì\r
55 */\r
56 extern int ring_capacity(const ringBuffer_t *ring);\r
57 \r
58 \r
59 /*!\r
60   \brief \83f\81[\83^\82Ì\8ai\94[\r
61 \r
62   \param[in] ring \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8d\\91¢\91Ì\r
63   \param[in] data \83f\81[\83^\r
64   \param[in] size \83f\81[\83^\83T\83C\83Y\r
65 \r
66   \return \8ai\94[\82µ\82½\83f\81[\83^\90\94\r
67 */\r
68 extern int ring_write(ringBuffer_t *ring, const char *data, int size);\r
69 \r
70 \r
71 /*!\r
72   \brief \83f\81[\83^\82Ì\8eæ\82è\8fo\82µ\r
73 \r
74   \param[in] ring \83\8a\83\93\83O\83o\83b\83t\83@\82Ì\8d\\91¢\91Ì\r
75   \param[out] buffer \83f\81[\83^\r
76   \param[in] size \8dÅ\91å\82Ì\83f\81[\83^\83T\83C\83Y\r
77 \r
78   \return \8eæ\82è\8fo\82µ\82½\83f\81[\83^\90\94\r
79 */\r
80 extern int ring_read(ringBuffer_t *ring, char *buffer, int size);\r
81 \r
82 #endif /* ! RING_BUFFER_H */\r