very special ring buffer. This is only for fc_GPS1PPS_F746_F4xx library

Dependents:   fc_GPS1PPS_f746_f4xx Frq_cuntr_Nucleo-F746ZG

Committer:
kenjiArai
Date:
Wed Nov 16 13:08:35 2016 +0000
Revision:
0:e206b41f0032
very special ring buffer only for Frequency counter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:e206b41f0032 1 /*
kenjiArai 0:e206b41f0032 2 * mbed Library program / Ring Buffer
kenjiArai 0:e206b41f0032 3 * CAUTION!!
kenjiArai 0:e206b41f0032 4 * This is very special ring buffer which save newest data and remember
kenjiArai 0:e206b41f0032 5 * some amount of old data.
kenjiArai 0:e206b41f0032 6 * If write newest data into the buffer, lose oldest data.
kenjiArai 0:e206b41f0032 7 * Don't use this library as normal type of a FIFO ring buffer!!
kenjiArai 0:e206b41f0032 8 *
kenjiArai 0:e206b41f0032 9 * Copyright (c) 2016 Kenji Arai / JH1PJL
kenjiArai 0:e206b41f0032 10 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:e206b41f0032 11 * http://mbed.org/users/kenjiArai/
kenjiArai 0:e206b41f0032 12 * Created: September 18th, 2016
kenjiArai 0:e206b41f0032 13 * Revised: November 8th, 2016
kenjiArai 0:e206b41f0032 14 *
kenjiArai 0:e206b41f0032 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
kenjiArai 0:e206b41f0032 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
kenjiArai 0:e206b41f0032 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
kenjiArai 0:e206b41f0032 18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 0:e206b41f0032 19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
kenjiArai 0:e206b41f0032 20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
kenjiArai 0:e206b41f0032 21 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 0:e206b41f0032 22 */
kenjiArai 0:e206b41f0032 23
kenjiArai 0:e206b41f0032 24 #ifndef _RINGBUFF_H
kenjiArai 0:e206b41f0032 25 #define _RINGBUFF_H
kenjiArai 0:e206b41f0032 26
kenjiArai 0:e206b41f0032 27 #define BUFFER_SIZE 4096
kenjiArai 0:e206b41f0032 28
kenjiArai 0:e206b41f0032 29 template <typename T>
kenjiArai 0:e206b41f0032 30 class RingBuff
kenjiArai 0:e206b41f0032 31 {
kenjiArai 0:e206b41f0032 32
kenjiArai 0:e206b41f0032 33 private:
kenjiArai 0:e206b41f0032 34 const int16_t buffer_size;
kenjiArai 0:e206b41f0032 35 int16_t head;
kenjiArai 0:e206b41f0032 36 int16_t head_temp;
kenjiArai 0:e206b41f0032 37 int16_t tail;
kenjiArai 0:e206b41f0032 38 int16_t tail_temp;
kenjiArai 0:e206b41f0032 39 T * buff;
kenjiArai 0:e206b41f0032 40
kenjiArai 0:e206b41f0032 41 public:
kenjiArai 0:e206b41f0032 42 RingBuff(const int16_t size=BUFFER_SIZE);
kenjiArai 0:e206b41f0032 43 ~RingBuff();
kenjiArai 0:e206b41f0032 44
kenjiArai 0:e206b41f0032 45 void ring_put_dt (T dt);
kenjiArai 0:e206b41f0032 46 T ring_get_newest_dt (void);
kenjiArai 0:e206b41f0032 47 T ring_get_pointed_dt (int16_t offset);
kenjiArai 0:e206b41f0032 48 int16_t ring_is_buf_full (void);
kenjiArai 0:e206b41f0032 49 int16_t ring_get_buf_size (void);
kenjiArai 0:e206b41f0032 50 void ring_clear_buf (void);
kenjiArai 0:e206b41f0032 51 int16_t ring_is_buf_empty (void);
kenjiArai 0:e206b41f0032 52 void debug_print_all_buffer(void);
kenjiArai 0:e206b41f0032 53
kenjiArai 0:e206b41f0032 54 };
kenjiArai 0:e206b41f0032 55
kenjiArai 0:e206b41f0032 56 #endif /* _RINGBUFF_H */