Andrew Boyson / net

Dependents:   oldheating gps motorhome heating

Committer:
andrewboyson
Date:
Mon Feb 25 20:59:19 2019 +0000
Revision:
126:62edacc9f14d
Parent:
93:580fc113d9e9
Child:
131:774f7f367031
Added ability to post content plus content length and content start .

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 74:c3756bfa960e 1 #ifndef TCB_H
andrewboyson 74:c3756bfa960e 2 #define TCB_H
andrewboyson 74:c3756bfa960e 3
andrewboyson 61:aad055f1b0d1 4 #include <stdint.h>
andrewboyson 61:aad055f1b0d1 5 #include <stdbool.h>
andrewboyson 61:aad055f1b0d1 6
andrewboyson 74:c3756bfa960e 7 #define TCB_EMPTY 0
andrewboyson 74:c3756bfa960e 8 #define TCB_SYN_RECEIVED 1
andrewboyson 74:c3756bfa960e 9 #define TCB_ESTABLISHED 2
andrewboyson 74:c3756bfa960e 10 #define TCB_CLOSE_FIN_WAIT 3
andrewboyson 10:f0854784e960 11
andrewboyson 10:f0854784e960 12 struct tcb
andrewboyson 10:f0854784e960 13 {
andrewboyson 10:f0854784e960 14 int state;
andrewboyson 79:f50e02fb5c94 15 uint32_t timeSendsBeingAcked; //Used for RTO
andrewboyson 82:20781198d26d 16 int countSendsNotAcked; //Used for RTO
andrewboyson 79:f50e02fb5c94 17 uint32_t timeLastRcvd; //Used for detect idle links
andrewboyson 74:c3756bfa960e 18 int ipType;
andrewboyson 80:4ef1500fca1d 19 int remArIndex; //Unique per remote ip when taken with the ipType
andrewboyson 80:4ef1500fca1d 20 int locIpScope; //Unique per local ip
andrewboyson 74:c3756bfa960e 21 uint16_t remPort;
andrewboyson 74:c3756bfa960e 22 uint16_t locPort;
andrewboyson 74:c3756bfa960e 23 uint32_t remMss;
andrewboyson 74:c3756bfa960e 24 uint32_t window;
andrewboyson 74:c3756bfa960e 25
andrewboyson 74:c3756bfa960e 26 uint32_t remIsn;
andrewboyson 74:c3756bfa960e 27 uint32_t bytesRcvdFromRem;
andrewboyson 74:c3756bfa960e 28 uint32_t bytesAckdToRem;
andrewboyson 74:c3756bfa960e 29 bool rcvdFin;
andrewboyson 74:c3756bfa960e 30
andrewboyson 74:c3756bfa960e 31 uint32_t locIsn;
andrewboyson 74:c3756bfa960e 32 uint32_t bytesSentToRem;
andrewboyson 74:c3756bfa960e 33 uint32_t bytesAckdByRem;
andrewboyson 74:c3756bfa960e 34 bool sentFin;
andrewboyson 126:62edacc9f14d 35
andrewboyson 126:62edacc9f14d 36 /*
andrewboyson 126:62edacc9f14d 37 Communicates between application (HTTP) and TCP.
andrewboyson 126:62edacc9f14d 38 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.
andrewboyson 126:62edacc9f14d 39 Once all packets have been received the application sets postCompleted to indicate that TCP should start sending data.
andrewboyson 126:62edacc9f14d 40 Once all packets have been sent the application returns a data size less than MSS.
andrewboyson 126:62edacc9f14d 41 Note that TCP needs to keep todo in case data has to be resent after the application thinks it has finished.
andrewboyson 126:62edacc9f14d 42 */
andrewboyson 126:62edacc9f14d 43 int32_t todo;
andrewboyson 126:62edacc9f14d 44 bool postComplete;
andrewboyson 10:f0854784e960 45 };
andrewboyson 10:f0854784e960 46
andrewboyson 61:aad055f1b0d1 47 extern uint32_t TcbGetIsn(void);
andrewboyson 80:4ef1500fca1d 48 extern struct tcb* TcbGetExisting(int ipType, int remArIndex, int locIpScope, uint16_t remPort, uint16_t locPort);
andrewboyson 61:aad055f1b0d1 49 extern struct tcb* TcbGetEmpty(void);
andrewboyson 83:08c983006a6e 50 extern struct tcb* TcbGetNext(struct tcb* pTcb);
andrewboyson 74:c3756bfa960e 51 extern void TcbInit(void);
andrewboyson 74:c3756bfa960e 52
andrewboyson 74:c3756bfa960e 53 #endif