A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.
Dependents: oldheating gps motorhome heating
tcp/tcb.h
- Committer:
- andrewboyson
- Date:
- 2019-04-10
- Revision:
- 140:9000ea70b220
- Parent:
- 131:774f7f367031
- Child:
- 144:6bd5c54efc7d
File content as of revision 140:9000ea70b220:
#ifndef TCB_H #define TCB_H #include <stdint.h> #include <stdbool.h> #define TCB_EMPTY 0 #define TCB_SYN_RECEIVED 1 #define TCB_ESTABLISHED 2 #define TCB_CLOSE_FIN_WAIT 3 struct tcb { int state; uint32_t timeSendsBeingAcked; //Used for RTO int countSendsNotAcked; //Used for RTO uint32_t timeLastRcvd; //Used for detect idle links int ipType; int remArIndex; //Unique per remote ip when taken with the ipType int locIpScope; //Unique per local ip uint16_t remPort; uint16_t locPort; uint32_t remMss; uint32_t window; uint32_t remIsn; uint32_t bytesRcvdFromRem; uint32_t bytesAckdToRem; bool rcvdFin; uint32_t locIsn; uint32_t bytesSentToRem; uint32_t bytesAckdByRem; bool sentFin; /* Communicates between application (HTTP) and TCP. Application usually works out what to do from the first packet and so it stores that in todo to remember what it is doing for subsequent packets. Once all packets have been received the application sets postCompleted to indicate that TCP should start sending data. Once all packets have been sent the application returns a data size less than MSS. Note that TCP needs to keep todo in case data has to be resent after the application thinks it has finished. */ int32_t todo; bool postComplete; uint32_t delayUntil; }; extern uint32_t TcbGetIsn(void); extern struct tcb* TcbGetExisting(int ipType, int remArIndex, int locIpScope, uint16_t remPort, uint16_t locPort); extern struct tcb* TcbGetEmpty(void); extern struct tcb* TcbGetNext(struct tcb* pTcb); extern void TcbInit(void); #endif