📄 buffer.c
字号:
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Limited 2006-2009
Part of BlueLab 4.1-Release
DESCRIPTION
Implementation for handling buffer functionality
FILE
buffer.c
*/
#include <print.h>
#include <stdlib.h>
#include "main.h"
#include "buffer.h"
/*
Allocate a buffer of at least minSize words
*/
bool allocBuffer(applicationTaskData *pTask, uint16 minSize)
{
bool lRet = FALSE;
PRINT(("allocBuffer : MinSize %d\n",minSize));
if (!pTask->buffer.buffer)
{
uint16 size = PBAPS_BUFFER_START_SIZE;
uint8 *buffer = malloc(size);
while ((!buffer) && (size>minSize))
{
size -= 5;
buffer = malloc(size);
}
if (buffer)
{
if (size >= minSize)
{
PRINT((" Buffer allocated. Size %d\n",size));
pTask->buffer.buffer = buffer;
pTask->buffer.sizeBuffer = size;
pTask->buffer.freeSpace = size;
pTask->buffer.nextPos = 0;
pTask->buffer.used = 0;
lRet = TRUE;
}
else
{
PRINT((" Unable to allocate a big enough buffer. Size %d\n",size));
free(buffer);
}
}
else
{
PRINT((" Unable to allocate buffer. Size %d\n",size));
}
}
else
{
PRINT((" Buffer already in use\n"));
}
return lRet;
}
/*
freeBuffer created using allocBuffer
*/
void freeBuffer(applicationTaskData *pTask)
{
if (pTask->buffer.buffer)
{
free(pTask->buffer.buffer);
pTask->buffer.buffer = NULL;
pTask->buffer.sizeBuffer = 0;
pTask->buffer.freeSpace = 0;
pTask->buffer.nextPos = 0;
pTask->buffer.used = 0;
}
}
/*
reset buffer
*/
void resetBuffer(applicationTaskData *pTask)
{
pTask->buffer.freeSpace = pTask->buffer.sizeBuffer;
pTask->buffer.nextPos = 0;
pTask->buffer.used = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -