www.pudn.com > uCOSII上实现的tcpip.rar > znetif.c


#include "include/znetif.h"

void znetif_init(znetif_t *pnetif)
{
	u8_t	i;

	pnetif->_buffer.rindex = 0;
	pnetif->_buffer.windex = 0;	

	for ( i = 0; i < ZNETIF_BUFFER_LEN; i++)
	{
		pnetif->_buffer._buffer_pool[i] = NULL;
	}

}

zbuffer_t * znetif_read(znetif_t *pnetif)
{
	zbuffer_t	*p = NULL;
	sys_enter_critical();
	p = pnetif->_buffer._buffer_pool[ pnetif->_buffer.rindex ] ;
	if ( p != NULL )
	{
		pnetif->_buffer._buffer_pool[ pnetif->_buffer.rindex ] = NULL;
		
		pnetif->_buffer.rindex ++;
		if ( pnetif->_buffer.rindex >=  ZNETIF_BUFFER_LEN )
		{
			pnetif->_buffer.rindex = 0;
		}
		
		sys_exit_critical();
		return p;
	}
	else
	{
		sys_exit_critical();
		return NULL;
	}
}

u8_t znetif_write(znetif_t *pnetif, zbuffer_t *pbuffer)
{
	if (pbuffer == NULL)
			return;
	sys_enter_critical();
	if( pnetif->_buffer._buffer_pool[ pnetif->_buffer.windex ] == NULL )
	{
		pnetif->_buffer._buffer_pool[ pnetif->_buffer.windex ] = pbuffer;
		
		pnetif->_buffer.windex ++;
		if ( pnetif->_buffer.windex >=  ZNETIF_BUFFER_LEN )
		{
			pnetif->_buffer.windex = 0;
		}
		
		sys_exit_critical();
		return 0;
	}
	sys_exit_critical();
	return -1;

}