* @File buffer.h
* @Brief fifo buffer
*
* @Author: Neucrack
* @Date: 2017-12-12 14:26:19
* @Last Modified by: Neucrack
* @Last Modified time: 2017-12-12 19:06:57
* @License MIT
*/
#ifndef _BUFFER_H_
#define _BUFFER_H_
#include "stdint.h"
#include "stdbool.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
uint16_t front;
uint16_t rear;
uint8_t* buffer;
uint32_t maxSize;
}Buffer_t;
void Buffer_Init(Buffer_t* buffer, uint8_t* dataBuffer, uint32_t maxSize);
bool Buffer_Puts(Buffer_t* buffer, uint8_t* data, uint16_t length);
bool Buffer_Gets(Buffer_t* buffer, uint8_t *data, uint16_t length);
int32_t Buffer_StartPostion(Buffer_t* buffer);
* query some data from the queue, and the data remain be a part of the queue
* @param data the address of the data save to
* @param startPosition Index of where to start query
* #param num The number of data will be query
* @retval Is query succeed
*/
int32_t Buffer_Query(Buffer_t* buffer, uint8_t* data, uint16_t length, uint16_t startPosition);
uint32_t Buffer_Size(Buffer_t* buffer);
uint32_t Buffer_Size2(Buffer_t* buffer,uint32_t index);
void Buffer_Clear(Buffer_t* buffer);
#ifdef __cplusplus
}
#endif
#endif