Beispiel #1
0
bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek)
{
	// ref field in struct pbuf has been used as index pointer for byte data
	tData* p = get_pBuf(sock);

	if (p != NULL)
	{
		if (p->idx < p->len)
		{
		uint8_t* buf = (uint8_t*)p->data;
		if (peek)
			*payload = buf[p->idx];
		else
			*payload = buf[p->idx++];
		INFO_UTIL_VER("get:%d %p %d\n",p->idx, p->data, *payload);
		return true;
		}else{
			//dealloc current buffer
			INFO_UTIL("Free %p\n", p->data);
			freetData(p->data, sock);
			ack_recved(p->pcb, p->len);
		}
	}
	return false;
}
Beispiel #2
0
void ackAndFreeData(void* pcb, int len, uint8_t sock, uint8_t* data)
{
	INFO_TCP("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data);
	if (!IS_UDP_SOCK(sock))
		ack_recved(pcb, len);
	if (data != NULL)
		freetData(data, sock);
}
Beispiel #3
0
void freeAllTcpData(uint8_t sock)
{
	tData* p = NULL;
	do{
		p = get_pBuf(sock);
		if (p != NULL)
			freetData(p->data, sock);
	}while(p!=NULL);
}
Beispiel #4
0
bool freeTcpData(uint8_t sock)
{
	tData* p = NULL;
	p = get_pBuf(sock);
	if (p != NULL)
	{
		freetData(p->data, sock);
		ack_recved(p->pcb, p->len);
		return true;
	}
	return false;
}
Beispiel #5
0
bool isAvailTcpDataByte(uint8_t sock)
{
	tData* p = get_pBuf(sock);

	if (p != NULL)
	{
		INFO_UTIL_VER("check:%d %d %p\n",p->idx, p->len, p->data);
		if (p->idx == p->len)
		{
			freetData(p->data, sock);
			ack_recved(p->pcb, p->len);
			INFO_UTIL("Free %p other buf %d tail:%d head:%d\n",
					p->data, IS_BUF_AVAIL(), tailBuf, headBuf);
			return (IS_BUF_AVAIL());
		}else{
			return true;
		}
	}
	return false;
}