very special ring buffer. This is only for fc_GPS1PPS_F746_F4xx library
Dependents: fc_GPS1PPS_f746_f4xx Frq_cuntr_Nucleo-F746ZG
RingBuff.h@0:e206b41f0032, 2016-11-16 (annotated)
- 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?
User | Revision | Line number | New 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 */ |