Andrew Boyson / net

Dependents:   oldheating gps motorhome heating

Committer:
andrewboyson
Date:
Tue Mar 19 12:12:26 2019 +0000
Revision:
131:774f7f367031
Parent:
126:62edacc9f14d
Child:
144:6bd5c54efc7d
Include ability to set a delay to a reply via TCP.

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 131:774f7f367031 43 int32_t todo;
andrewboyson 131:774f7f367031 44 bool postComplete;
andrewboyson 131:774f7f367031 45 uint32_t delayUntil;
andrewboyson 10:f0854784e960 46 };
andrewboyson 10:f0854784e960 47
andrewboyson 61:aad055f1b0d1 48 extern uint32_t TcbGetIsn(void);
andrewboyson 80:4ef1500fca1d 49 extern struct tcb* TcbGetExisting(int ipType, int remArIndex, int locIpScope, uint16_t remPort, uint16_t locPort);
andrewboyson 61:aad055f1b0d1 50 extern struct tcb* TcbGetEmpty(void);
andrewboyson 83:08c983006a6e 51 extern struct tcb* TcbGetNext(struct tcb* pTcb);
andrewboyson 74:c3756bfa960e 52 extern void TcbInit(void);
andrewboyson 74:c3756bfa960e 53
andrewboyson 74:c3756bfa960e 54 #endif