⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buffer.c

📁 藍芽電話簿範本
💻 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 + -