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
ringBuffer.cpp
00001 #include "ringBuffer.h" 00002 00003 void RingBuffer_init(RingBuffer *buffer) 00004 { 00005 buffer->length = RX_BUFF_SIZE; 00006 buffer->start = 0; 00007 buffer->end = 0; 00008 } 00009 00010 int16_t RingBuffer_write(RingBuffer *buffer, uint8_t *data, uint16_t amount) 00011 { 00012 if(RingBuffer_available_data(buffer) == 0) { 00013 buffer->start = buffer->end = 0; 00014 } 00015 00016 if(amount > RingBuffer_available_space(buffer)) 00017 return -1; 00018 00019 uint16_t i; 00020 uint16_t temp = buffer->end; 00021 for(i = 0; i < amount; i++){ 00022 buffer->buffer[temp] = data[i]; 00023 temp++; 00024 temp %= buffer->length; 00025 } 00026 RingBuffer_commit_write(buffer, amount); 00027 return amount; 00028 } 00029 00030 bool RingBuffer_writebyte(RingBuffer *buffer, uint8_t byte){ 00031 if(RingBuffer_available_data(buffer) == 0) { 00032 buffer->start = buffer->end = 0; 00033 } 00034 00035 if(1 > RingBuffer_available_space(buffer)) 00036 return false; 00037 00038 buffer->buffer[buffer->end] = byte; 00039 RingBuffer_commit_write(buffer, 1); 00040 return true; 00041 } 00042 00043 int16_t RingBuffer_read(RingBuffer *buffer, uint8_t *target, uint16_t amount) 00044 { 00045 if(amount > RingBuffer_available_data(buffer)) 00046 return -1; 00047 00048 uint16_t i; 00049 uint16_t temp = buffer->start; 00050 for(i = 0; i < amount; i++){ 00051 target[i] = buffer->buffer[temp]; 00052 temp++; 00053 temp %= buffer->length; 00054 } 00055 00056 RingBuffer_commit_read(buffer, amount); 00057 if(buffer->end == buffer->start) { 00058 buffer->start = buffer->end = 0; 00059 } 00060 return amount; 00061 } 00062 00063 bool RingBuffer_readbyte(RingBuffer *buffer, uint8_t* target){ 00064 if(RingBuffer_available_data(buffer) == 0) 00065 return false; 00066 00067 *target = buffer->buffer[buffer->start]; 00068 RingBuffer_commit_read(buffer, 1); 00069 00070 if(buffer->end == buffer->start) { 00071 buffer->start = buffer->end = 0; 00072 } 00073 return true; 00074 } 00075 00076 bool RingBuffer_isEmpty(RingBuffer *buffer){ 00077 return RingBuffer_empty(buffer); 00078 } 00079 00080 bool RingBuffer_isFull(RingBuffer *buffer){ 00081 return RingBuffer_full(buffer); 00082 } 00083 00084 uint16_t RingBuffer_availableDataAmount(RingBuffer *buffer){ 00085 return RingBuffer_available_data(buffer); 00086 } 00087 00088 uint16_t RingBuffer_availableSpaceAmount(RingBuffer *buffer){ 00089 return RingBuffer_available_space(buffer); 00090 } 00091 00092 00093 00094
Generated on Sun Jul 24 2022 10:29:02 by 1.7.2