nRF51822 serves as the bridge between BLE central and MCU, which makes cental able to fetch photos from serial camera.

Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_blinky by RedBearLab

Committer:
stormysun513
Date:
Sun May 22 14:29:58 2016 +0000
Revision:
21:4753996b0bcb
Parent:
12:7060e287bdae
Saperate turn on and off command into different packet headers

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stormysun513 12:7060e287bdae 1 #ifndef RINGBUFFER_H
stormysun513 12:7060e287bdae 2 #define RINGBUFFER_H
stormysun513 12:7060e287bdae 3
stormysun513 12:7060e287bdae 4 #include <stdint.h>
stormysun513 12:7060e287bdae 5
stormysun513 12:7060e287bdae 6 #define RX_BUFF_SIZE 129
stormysun513 12:7060e287bdae 7 #define BYTES_PER_INTERRUPT 1
stormysun513 12:7060e287bdae 8
stormysun513 12:7060e287bdae 9 typedef struct {
stormysun513 12:7060e287bdae 10 uint8_t buffer[RX_BUFF_SIZE];
stormysun513 12:7060e287bdae 11 uint16_t length;
stormysun513 12:7060e287bdae 12 uint16_t start;
stormysun513 12:7060e287bdae 13 uint16_t end;
stormysun513 12:7060e287bdae 14 } RingBuffer;
stormysun513 12:7060e287bdae 15
stormysun513 12:7060e287bdae 16 void RingBuffer_init(RingBuffer *buffer);
stormysun513 12:7060e287bdae 17
stormysun513 12:7060e287bdae 18 int16_t RingBuffer_read(RingBuffer *buffer, uint8_t *target, uint16_t amount);
stormysun513 12:7060e287bdae 19 int16_t RingBuffer_write(RingBuffer *buffer, uint8_t *data, uint16_t amount);
stormysun513 12:7060e287bdae 20 bool RingBuffer_readbyte(RingBuffer *buffer, uint8_t *target);
stormysun513 12:7060e287bdae 21 bool RingBuffer_writebyte(RingBuffer *buffer, uint8_t byte);
stormysun513 12:7060e287bdae 22
stormysun513 12:7060e287bdae 23 bool RingBuffer_isEmpty(RingBuffer *buffer);
stormysun513 12:7060e287bdae 24 bool RingBuffer_isFull(RingBuffer *buffer);
stormysun513 12:7060e287bdae 25 uint16_t RingBuffer_availableDataAmount(RingBuffer *buffer);
stormysun513 12:7060e287bdae 26 uint16_t RingBuffer_avalailableSpaceAmount(RingBuffer *buffer);
stormysun513 12:7060e287bdae 27
stormysun513 12:7060e287bdae 28
stormysun513 12:7060e287bdae 29 #define RingBuffer_available_data(B) (((B)->end + (B)->length - (B)->start) % (B)->length)
stormysun513 12:7060e287bdae 30 #define RingBuffer_available_space(B) ((B)->length - 1 - RingBuffer_available_data((B)))
stormysun513 12:7060e287bdae 31 #define RingBuffer_full(B) (RingBuffer_available_data((B)) - ((B)->length - 1) == 0)
stormysun513 12:7060e287bdae 32 #define RingBuffer_empty(B) (RingBuffer_available_data((B)) == 0)
stormysun513 12:7060e287bdae 33 #define RingBuffer_puts(B, D) RingBuffer_write((B), bdata((D)), blength((D)))
stormysun513 12:7060e287bdae 34 #define RingBuffer_get_all(B) RingBuffer_gets((B), RingBuffer_available_data((B)))
stormysun513 12:7060e287bdae 35 #define RingBuffer_starts_at(B) ((B)->buffer + (B)->start)
stormysun513 12:7060e287bdae 36 #define RingBuffer_ends_at(B) ((B)->buffer + (B)->end)
stormysun513 12:7060e287bdae 37 #define RingBuffer_commit_read(B, A) ((B)->start = ((B)->start + (A)) % (B)->length)
stormysun513 12:7060e287bdae 38 #define RingBuffer_commit_write(B, A) ((B)->end = ((B)->end + (A)) % (B)->length)
stormysun513 12:7060e287bdae 39
stormysun513 12:7060e287bdae 40 #endif