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;
}